在进行数据结构或者算法设计时,需要动态的获取程序或者对象的内存使用情况,现在将一些收集的信息记载如下:
1、JVM运行时Runtime,粗略的获取JVM内存使用情况;
程序开始时(先调用一下垃圾回收,但是不一定立即执行):
Runtime.getRuntime().gc();
long initm=Runtime.getRuntime().freeMemory();
程序结束时:
Runtime.getRuntime().gc();
long endm=Runtime.getRuntime().freeMemory();
计算空闲差:
System.out.println(initm-endm);
注意:该种方法只是获得个大概信息,并不能精确到对象级。
2、使用工具 java visual VM 或者JProfiler
这里我们使用java visual VM,因为其有更高的开源特性,且为jdk自带。
VisualVM简介
简单说来,VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力。所有这些都是免费的!它囊括的命令行工具包括jstat, JConsole, jstack, jmap 和 jinfo,这些工具与JDK的标准版本是一致的。
你可以使用VisualVM生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析