From 91c2f0cde2a009bd52aa1c3d1dee705cc02c932f Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Wed, 26 Nov 2014 11:21:15 -0800 Subject: Trim reference tables when we trim the heap Before: System server: virtual shared shared private private size RSS PSS clean dirty clean dirty # object 2200 300 229 0 80 0 220 77 /dev/ashmem/dalvik-indirect ref table (deleted) Location: 1896 128 102 0 28 0 100 39 /dev/ashmem/dalvik-indirect ref table (deleted) After: virtual shared shared private private size RSS PSS clean dirty clean dirty # object System server: 2216 64 64 0 0 0 64 79 /dev/ashmem/dalvik-indirect ref table (deleted) Location: 2120 48 48 0 0 0 48 67 /dev/ashmem/dalvik-indirect ref table (deleted) No pause time regression measured in memalloc test. (cherry picked from commit 84dc99d2fa67e5dff018685661cb2bff62132989) Change-Id: I80d9bd3b98e888fa8f77d03df69f8479ed209986 --- runtime/java_vm_ext.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'runtime/java_vm_ext.cc') diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index a5abce6ab1..5d04faccb5 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -756,6 +756,11 @@ void JavaVMExt::SweepJniWeakGlobals(IsMarkedCallback* callback, void* arg) { } } +void JavaVMExt::TrimGlobals() { + WriterMutexLock mu(Thread::Current(), globals_lock_); + globals_.Trim(); +} + void JavaVMExt::VisitRoots(RootCallback* callback, void* arg) { Thread* self = Thread::Current(); { -- cgit v1.2.3-59-g8ed1b