根据给出的参数,JVM使用了多少物理内存?

时间:2015-11-24 13:31:31

标签: java memory jvm

我想了解JVM在以下情况下使用了多少物理内存:

java -Xms2G -Xmx2G -XX:PermSize512M -version

我假设它使用最小和最大2GB + 512 MB - 总共使用2.5GB物理内存?

什么时候交换空间会占用内存?

enter image description here

参考1:https://plumbr.eu/outofmemoryerror/java-heap-space 参考2:https://plumbr.eu/outofmemoryerror/out-of-swap-space

1 个答案:

答案 0 :(得分:2)

  

根据给出的参数,JVM使用了多少物理内存?

(虚拟)内存占用量根据参数之外的许多因素而有很大差异。

  

我假设它使用最小和最大2GB + 512 MB - 总共使用2.5GB物理内存?

首先,内存使用量可能会大于此值。占用的额外内存:

  • 包含JVM本机代码库的(已加载)可执行文件和共享库/ DLL,

  • 包含线程堆栈的堆外内存段,以及

  • 用于直接映射文件和其他内容的堆外内存,由JVM,应用程序和第三方本机库分配。

其次,我们在这里讨论的是虚拟内存使用情况,而不是物理内存使用情况。物理内存使用量将小于虚拟内存。

请注意,实际的物理内存使用量通常取决于整个系统对内存的需求,并且随着系统通过“分页”处理竞争需求而易于波动。你的JVM进出。

  

什么时候交换空间会占用内存?

交换空间通常分配作为"支持"用于JVM处理虚拟内存页面。如果操作系统需要从JVM中取出物理内存页面以便提供给其他应用程序,它就会发挥作用。这些页面中的JVM状态被写入交换空间,然后页面被加载另一个应用程序的状态(例如从该应用程序的交换空间),然后映射到地址空间。

有关更多信息,请阅读virtual memory上的维基百科页面。