Java程序,java对象内存占用信息获取

来源:互联网 发布:eve online mac版 编辑:程序博客网 时间:2024/05/22 11:38

在进行数据结构或者算法设计时,需要动态的获取程序或者对象的内存使用情况,现在将一些收集的信息记载如下:

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分析,同时它还支持在MBeans上进行浏览和操作。尽管VisualVM自身要在JDK6这个版本上运行,但是JDK1.4以上版本的程序它都能监控。  
如何获取VisualVM  
      VisualVM的一个最大好处就是,它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本。点击一下jvisualvm.exe图标它就可以运行了。   
      你所需要做的只是点一下jvisualvm.exe,就能启动它。运行中的所有Java应用程序将显示在右边的导航栏。你会发现根本不需要在VisualVM 里亲自为你的应用程序注册,因为它们全都会自动显示出来。你甚至还可以在导航栏里查看到远程的应用程序。  

 使用VisualVM  
      VisualVM有很多令人眼前一亮的功能,它能使你:  
      ◆监控应用程序的性能和内存占用情况  
      ◆监控应用程序的线程  
      ◆分析(Profile)应用程序性能和内存分配情况  
      ◆进行线程转储(Thread Dump)或堆转储(Heap Dump)  
      ◆分析核心转储(Core Dump)  
      ◆保存快照以便脱机分析应用程序。

  

原创粉丝点击