Hotspot Java / JVM如何存储内存?

时间:2013-07-31 21:18:52

标签: java memory jvm jvm-hotspot

除了这些地方,主机点JVM进程是否存储内存:

  • perm gen
  • 终身一代
  • 伊甸园空间
  • from space
  • to space
  • 代码缓存

也就是说:热点流程有哪些可能的方式可以保留&在机器上提交内存,以便所有内存显示在其中一个地方的统计数据中?

我能想到的一些答案(让我知道这些是否属实):

  • 用于线程堆栈的虚拟内存未以这些数字表示
  • 任何已加载的dll或文件。

编辑:

给出了一些其他答案:

  • java.exe本身
  • JNI方法可以自行分配内存
  • 任何本机代码(例如来自dll)都可以分配内存。
  • 用于运行自身的一般JVM元数据。

1 个答案:

答案 0 :(得分:1)

到目前为止你是正确的(DLL包括所有JNI库和他们分配的任何内存)。 VM还具有其自己的代码(例如,java的内容),关于分配给Java程序的存储器的簿记信息以及VM代理使用的可能存储器。基本上,您在第一个列表中描述的是构成虚拟机“运行内存”的项目; JVM内存的其余部分都是代表虚拟机“硬件”的所有项目,例如将其连接到操作系统的网络,图形等的库。