读书人

从一个例证看JVM启动过程(1)

发布时间: 2012-09-16 17:33:17 作者: rapoo

从一个例子看JVM启动过程(1)
开题从一个例子说起:

public class NativeMemoryGC{    @SuppressWarnings("restriction")    public static void main(String[] args) throws SecurityException, NoSuchFieldException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InterruptedException    {     System.out.println("maxMemoryValue:"+sun.misc.VM.maxDirectMemory());                Class c = Class.forName("java.nio.Bits");        Field maxMemory = c.getDeclaredField("maxMemory");        maxMemory.setAccessible(true);        synchronized (c) {            Long maxMemoryValue = (Long)maxMemory.get(null);            System.out.println("maxMemoryValue:"+maxMemoryValue);        }     }}


Bits.java
private static volatile long maxMemory = VM.maxDirectMemory();

执行结果:
maxMemoryValue:259522560
maxMemoryValue:67108864

从源代码来看2者皆是调用的VM类的静态方法maxDirectMemory(),为什么2者会有不一样的结果呢??
------内网字数限制,需要分篇解析-----

读书人网 >编程

热点推荐