【发布时间】:2013-08-01 14:48:12
【问题描述】:
除了这些地方之外,hostspot JVM 进程是否还有其他地方存储内存:
- 烫发
- 终身代
- 伊甸园空间
- 来自太空
- 到太空
- 代码缓存
也就是说:热点进程有哪些可能的方式可以在机器上保留和提交内存,以使所述内存不会显示在其中一个位置的统计信息中?
我能想到的一些答案(如果是真的,请告诉我):
- 用于线程堆栈的虚拟内存未以这些数字表示
- 任何加载的 dll 或文件。
编辑:
给出了一些其他答案:
- java.exe 本身
- JNI 方法可以自己分配内存
- 任何本机代码(例如来自 dll)都可以分配内存。
- 用于自行运行的常规 JVM 元数据。
【问题讨论】:
-
本机代码将分配自己的内存。严格来说,这在 JVM 之外运行,但它会导致您的程序使用更多内存,然后报告这些数字。
-
请记住,以上所有“空格”都代表一个特定的 JVM 系列(热点)——没有什么可以说每个 JVM 都有一个“伊甸园空间”或一个“到空间” ”。几乎所有 JVM 进程中存在的三个主要空间是主对象堆、用于类信息和代码的堆以及 JVM 内部使用的“非 Java”堆。 (有人可能会说执行堆栈是另一个“空间”,或者将其视为“非 Java”。)
标签: java memory jvm jvm-hotspot