根据一篇关于Java内存和特性的论文:
"... 内存分数分为两种类型:堆内存,即应用程序在运行时消耗的内存;对象内存,即程序中使用的各种对象分配的内存,例如整数和字符串等。 ..."
他们的意思是stack当他们说时的记忆object记忆,或者它们是什么意思? (很困惑,如果我没记错的话,对象是在Java的堆中分配的)
第二个问题,如果我只是想测量完整程序执行期间堆和堆栈的总大小,我应该使用什么工具?我一直在四处寻找并尝试了内置的 Java ProfilerNetBeans 7.3.1并且你的工具包 12.0.6,我可以在其中检查堆,但是当涉及到研究放置在堆栈上的“对象”和变量时,我找不到方法!
总而言之,我如何衡量论文所描述的内容:
Thanks!
堆内存:Java对象的存储。假设当您使用 new 关键字创建类的实例时。
堆栈内存:用于存储局部变量、方法调用等。JVM也可以决定并使用它来存储某些对象以提高性能。
要获取您使用的总内存 -
usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
您无法在运行时获取堆栈内存,但可以使用预定义的堆栈大小启动应用程序,这取决于您的平台。
有一个非堆内存,我认为他们将其定义为对象内存,用于存储加载的类..元数据等。
参考:
内存MXBean http://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html
JConsole http://docs.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)