gpt4 book ai didi

java - 堆内存与对象内存

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:28 27 4
gpt4 key购买 nike

根据一篇关于Java内存和特性的论文:

"... The memory score partitions into two types: heap memory, which is the memory consumed by the application during runtime, and object memory, which is the memory allocated by various objects used in the program, such as integers and strings, etc. ..."

当他们说对象内存时,他们指的是堆栈内存,还是什么意思? (很困惑,如果我没记错的话,对象是在 Java 的堆中分配的)

第二个问题,如果我只是想在一个完整的程序执行期间测量堆和堆栈的总大小,我应该使用什么工具?我一直在四处寻找并试用了 NetBeans 7.3.1YourKit 12.0.6 中的内置 Java Profiler,我可以在其中检查堆,但是当说到研究放在栈上的“对象”和变量,我找不到办法!

总而言之,我如何衡量论文所描述的内容:

  • 使用的总堆内存
  • 使用的对象内存总量

谢谢!

最佳答案

堆内存:Java 对象的存储。假设您使用 new 关键字创建类的实例。

Stack Memory:用于存储局部变量、方法调用等。JVM 也可以决定使用它来存储某些对象以提高性能。

要获取,你使用的总内存-

usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

您无法在运行时获取堆栈内存,但您可以使用预定义的堆栈大小启动应用程序,这取决于您的平台。

有一个非堆内存,我认为他们将其定义为对象内存,用于存储加载的类..元数据等。

引用资料:

MemoryMXBean

JConsole

关于java - 堆内存与对象内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18323911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com