2016年6月25日
Java不支持实时内存调试?
今天在调试Java程序时,想看看char类型的数据在内存中是如何存储的,于是打开了Eclipse的memory调试窗口,但是,memory窗口是灰的,无法进行任何操作。
经过一番搜索,在Eclipse上没有找到实时调试Java程序内存(监控或修改内存、堆heap、栈stack)的方法。
比较讨厌的是,Eclipse在Java development user guide帮助文档中详细的介绍了如何使用memory窗口调试内存——Inspecting memory in the Memory view,然而并无卵用,memory窗口就是灰的。
个人猜测,很可能Java希望对使用者屏蔽内存、地址等传统概念,于是,JVM并不对外公开内存细节,未提供实时查看、修改(虚拟)内存的功能,当然也就不存在实时内存调试的方法。
其他内存工具
不过,Java提供了一些其他很有用的内存分析工具,例如:
-
jmap
jmap提供了java heap dump功能,可以生成heap快照,分析Java内存溢出问题。
参见诊断Java内存溢出方法:Java heap dump触发和分析