为什么Activity Monitor显示Java的不同内存使用情况,然后运行Java?

时间:2014-06-26 17:04:28

标签: java memory

所以我有这段代码:

public class TestClass {

    public static void main(String[] args) throws InterruptedException {
        Runtime runtime = Runtime.getRuntime();
        ArrayList<Integer> integers = new ArrayList<Integer>();
        integers.ensureCapacity(Integer.MAX_VALUE/5);
        System.out.println(runtime.totalMemory()/1000000);
        Thread.sleep(10000);
    }
}

为我打印1975年左右的东西。

但与此同时我正在观看Mac Os中的Activity Monitor,它说Java进程正在使用1.62Gib

为何与众不同?

1 个答案:

答案 0 :(得分:0)

您的程序只显示您的小程序的JVM的内存。其他程序使用自己的JVM和自己的内存。只有像OpenCL这样的特殊本机库才能完全可视化。

对于内存分析,请使用Java VisualVM(./bin(java的安装文件夹)或http://visualvm.java.net/中的JDK 1.7或更高版本)。 有一个运行JVM及其内存使用情况的具体列表。您可以执行堆转储并查看什么对象使用了多少内存。