VMRuntime.java revision 26376765d7333ddf04c021365a1eadd9d47feb7e
1e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom/* 2e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Copyright (C) 2007 The Android Open Source Project 3e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 4e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 5e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * you may not use this file except in compliance with the License. 6e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * You may obtain a copy of the License at 7e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 8e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 9e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 10e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 11e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 12e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * See the License for the specific language governing permissions and 14e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * limitations under the License. 15e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 16e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 17e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrompackage dalvik.system; 18e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 19e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom/** 20e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Provides an interface to VM-global, Dalvik-specific features. 21e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * An application cannot create its own Runtime instance, and must obtain 22e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * one from the getRuntime method. 23e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 24e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @hide 25e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 26e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrompublic final class VMRuntime { 27e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 28e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 29e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Holds the VMRuntime singleton. 30e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 31e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom private static final VMRuntime THE_ONE = new VMRuntime(); 32e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 33e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 34e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Prevents this class from being instantiated. 35e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 36e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom private VMRuntime() { 37e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 38e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 39e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 40e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns the object that represents the VM instance's Dalvik-specific 41e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * runtime environment. 42e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 43e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @return the runtime object 44e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 45e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public static VMRuntime getRuntime() { 46e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return THE_ONE; 47e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 48e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 49e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 50e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns a copy of the VM's command-line property settings. 51e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * These are in the form "name=value" rather than "-Dname=value". 52e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 53e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native String[] properties(); 54e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 55e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 56e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns the VM's boot class path. 57e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 58e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native String bootClassPath(); 59e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 60e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 61e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns the VM's class path. 62e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 63e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native String classPath(); 64e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 65e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 66e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns the VM's version. 67e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 68e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native String vmVersion(); 69e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 70e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 7126376765d7333ddf04c021365a1eadd9d47feb7eBrian Carlstrom * Returns the name of the shared library providing the VM implementation. 7226376765d7333ddf04c021365a1eadd9d47feb7eBrian Carlstrom */ 7326376765d7333ddf04c021365a1eadd9d47feb7eBrian Carlstrom public native String vmLibrary(); 7426376765d7333ddf04c021365a1eadd9d47feb7eBrian Carlstrom 7526376765d7333ddf04c021365a1eadd9d47feb7eBrian Carlstrom /** 76e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Gets the current ideal heap utilization, represented as a number 77e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * between zero and one. After a GC happens, the Dalvik heap may 78e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * be resized so that (size of live objects) / (size of heap) is 79e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * equal to this number. 80e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 81e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @return the current ideal heap utilization 82e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 83e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native float getTargetHeapUtilization(); 84e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 85e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 86e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Sets the current ideal heap utilization, represented as a number 87e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * between zero and one. After a GC happens, the Dalvik heap may 88e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * be resized so that (size of live objects) / (size of heap) is 89e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * equal to this number. 90e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 91e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * <p>This is only a hint to the garbage collector and may be ignored. 92e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 93e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @param newTarget the new suggested ideal heap utilization. 94e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This value may be adjusted internally. 95e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @return the previous ideal heap utilization 96e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @throws IllegalArgumentException if newTarget is <= 0.0 or >= 1.0 97e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 98e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public float setTargetHeapUtilization(float newTarget) { 99e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom if (newTarget <= 0.0f || newTarget >= 1.0f) { 100e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom throw new IllegalArgumentException(newTarget + 101e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom " out of range (0,1)"); 102e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 103e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /* Synchronize to make sure that only one thread gets 104e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * a given "old" value if both update at the same time. 105e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Allows for reliable save-and-restore semantics. 106e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 107e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom synchronized (this) { 108e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom float oldTarget = getTargetHeapUtilization(); 109e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom nativeSetTargetHeapUtilization(newTarget); 110e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return oldTarget; 111e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 112e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 113e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 114e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 115e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Sets the target SDK version. Should only be called before the 116e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * app starts to run, because it may change the VM's behavior in 117e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * dangerous ways. Use 0 to mean "current" (since callers won't 118e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * necessarily know the actual current SDK version, and the 119e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * allocated version numbers start at 1). 120e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 121e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void setTargetSdkVersion(int targetSdkVersion); 122e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 123e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 124e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It was part of a 125e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * heap sizing API which was removed in Honeycomb. 126e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 127e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 128e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public long getMinimumHeapSize() { 129e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return 0; 130e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 131e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 132e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 133e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It was part of a 134e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * heap sizing API which was removed in Honeycomb. 135e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 136e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 137e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public long setMinimumHeapSize(long size) { 138e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return 0; 139e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 140e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 141e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 142e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It used to 143e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * perform a garbage collection that cleared SoftReferences. 144e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 145e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 146e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public void gcSoftReferences() {} 147e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 148e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 149e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It is equivalent 150e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * to {@link System#runFinalization}. 151e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 152e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 153e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public void runFinalizationSync() { 154e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom System.runFinalization(); 155e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 156e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 157e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 158e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Implements setTargetHeapUtilization(). 159e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * 160e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * @param newTarget the new suggested ideal heap utilization. 161e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This value may be adjusted internally. 162e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 163e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom private native void nativeSetTargetHeapUtilization(float newTarget); 164e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 165e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 166e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It was part of 167e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * the external allocation API which was removed in Honeycomb. 168e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 169e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 170e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public boolean trackExternalAllocation(long size) { 171e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return true; 172e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 173e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 174e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 175e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It was part of 176e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * the external allocation API which was removed in Honeycomb. 177e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 178e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 179e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public void trackExternalFree(long size) {} 180e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 181e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 182e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This method exists for binary compatibility. It was part of 183e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * the external allocation API which was removed in Honeycomb. 184e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 185e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom @Deprecated 186e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public long getExternalBytesAllocated() { 187e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom return 0; 188e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom } 189e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 190e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 191e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Tells the VM to enable the JIT compiler. If the VM does not have a JIT 192e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * implementation, calling this method should have no effect. 193e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 194e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void startJitCompilation(); 195e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 196e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 197e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Tells the VM to disable the JIT compiler. If the VM does not have a JIT 198e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * implementation, calling this method should have no effect. 199e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 200e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void disableJitCompilation(); 201e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 202e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 203e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns an array allocated in an area of the Java heap where it will never be moved. 204e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * This is used to implement native allocations on the Java heap, such as DirectByteBuffers 205e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * and Bitmaps. 206e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 207e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native Object newNonMovableArray(Class<?> componentType, int length); 208e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 209e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 210e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns the address of array[0]. This differs from using JNI in that JNI might lie and 211e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * give you the address of a copy of the array when in forcecopy mode. 212e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 213e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native long addressOf(Object array); 214e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 215e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 216e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Removes any growth limits, allowing the application to allocate 217e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * up to the maximum heap size. 218e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 219e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void clearGrowthLimit(); 220e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 221e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom /** 222e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom * Returns true if either a Java debugger or native debugger is active. 223e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom */ 224e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native boolean isDebuggerActive(); 225e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom 226e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void trimHeap(); 227e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom public native void concurrentGC(); 228e96f94f57430bf3060581c816cc3a148adbe91a4Brian Carlstrom} 229