001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package java.lang;
018:
019: /**
020: * Provides the methods to interact with VM Memory Manager that are used by
021: * different classes from the <code>java.lang</code> package, such as Object,
022: * System, Runtime.
023: * <p>
024: * This class must be implemented according to the common policy for porting
025: * interfaces - see the porting interface overview for more detailes.
026: *
027: * @author Evgueni Brevnov, Roman S. Bushmanov
028: * @version $Revision: 1.1.2.1.4.4 $
029: *
030: * @api2vm
031: */
032: final class VMMemoryManager {
033:
034: /**
035: * This class is not supposed to be instantiated.
036: */
037: private VMMemoryManager() {
038: }
039:
040: /**
041: * This method satisfies the requirements of the specification for the
042: * {@link System#arraycopy(java.lang.Object, int, java.lang.Object, int, int)
043: * System.arraycopy(java.lang.Object src, int srcPos, java.lang.Object dest,
044: * int destPos, int length)} method.
045: * <p>
046: * <b>Note:</b> Under design yet. Subjected to change.
047: * @api2vm
048: */
049: static native void arrayCopy(Object src, int srcPos, Object dest,
050: int destPos, int len);
051:
052: /**
053: * Creates a shallow copy of the specified object.
054: * <p>
055: * <b>Note:</b> This method is used for the {@link java.lang.Object#clone()
056: * Object.clone()} method implementation.
057: *
058: * @param object an object to be cloned
059: * @return a copy of the specified object
060: * @api2vm
061: */
062: static native Object clone(Object object);
063:
064: /**
065: * This method satisfies the requirements of the specification for the
066: * {@link Runtime#freeMemory() Runtime.freeMemory()} method.
067: * @api2vm
068: */
069: static native long getFreeMemory();
070:
071: /**
072: * This method satisfies the requirements of the specification for the
073: * {@link System#identityHashCode(java.lang.Object)
074: * System.identityHashCode(Object x)} method.
075: * @api2vm
076: */
077: static native int getIdentityHashCode(Object object);
078:
079: /**
080: * This method satisfies the requirements of the specification for the
081: * {@link Runtime#maxMemory() Runtime.maxMemory()} method.
082: * @api2vm
083: */
084: static native long getMaxMemory();
085:
086: /**
087: * This method satisfies the requirements of the specification for the
088: * {@link Runtime#totalMemory() Runtime.totalMemory()} method.
089: * @api2vm
090: */
091: static native long getTotalMemory();
092:
093: /**
094: * This method satisfies the requirements of the specification for the
095: * {@link Runtime#runFinalization() Runtime.runFinalization()} method.
096: * @api2vm
097: */
098: static void runFinalization() {
099: FinalizerThread.runFinalization();
100: }
101:
102: /**
103: * This method satisfies the requirements of the specification for the
104: * {@link Runtime#gc() Runtime.gc()} method.
105: * @api2vm
106: */
107: static native void runGC();
108: }
|