日期:2014-05-20  浏览次数:20603 次

监控一个运行着的程序,里面有个java对象,如何实时查看该对象的内存变化情况
Player play = new Player();
Player play2 = new Player();
while(true){
    play.playGames();
    play2.playGames();
}

如何查看play对象和play2对象运行2个小时中的内存情况,峰值什么的,有什么简单易使用的工具请介绍下,或者有什么办法也请说下

------解决方案--------------------
JDK自带的jconsole.exe或jvisualvm.exe
------解决方案--------------------
貌似也是个世界级难题。。。

你会发现查出来内存占用最大的都是 byte[] 或者 char[] 这类,因为工具不会根据对象包含关系来做累计运算的。

所以,如果该对象结构如果比较简单的话,想探知其内存占用,可以将其直接进行对象序列化,那么大致可以知道其内存占用大小。不过如果对象复杂,甚至涉及外设资源啥的,就没啥解了。
------解决方案--------------------
jprofiler挺好用的,你可以试试