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 &lt;= 0.0 or &gt;= 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