我想了解JVM在以下情况下使用了多少物理内存:
java -Xms2G -Xmx2G -XX:PermSize512M -version
我假设它使用最小和最大2GB + 512 MB - 总共使用2.5GB物理内存?
什么时候交换空间会占用内存?
参考1:https://plumbr.eu/outofmemoryerror/java-heap-space 参考2:https://plumbr.eu/outofmemoryerror/out-of-swap-space
答案 0 :(得分:2)
根据给出的参数,JVM使用了多少物理内存?
(虚拟)内存占用量根据参数之外的许多因素而有很大差异。
我假设它使用最小和最大2GB + 512 MB - 总共使用2.5GB物理内存?
首先,内存使用量可能会大于此值。占用的额外内存:
包含JVM本机代码库的(已加载)可执行文件和共享库/ DLL,
包含线程堆栈的堆外内存段,以及
用于直接映射文件和其他内容的堆外内存,由JVM,应用程序和第三方本机库分配。
其次,我们在这里讨论的是虚拟内存使用情况,而不是物理内存使用情况。物理内存使用量将小于虚拟内存。
请注意,实际的物理内存使用量通常取决于整个系统对内存的需求,并且随着系统通过“分页”处理竞争需求而易于波动。你的JVM进出。
什么时候交换空间会占用内存?
交换空间通常分配作为"支持"用于JVM处理虚拟内存页面。如果操作系统需要从JVM中取出物理内存页面以便提供给其他应用程序,它就会发挥作用。这些页面中的JVM状态被写入交换空间,然后页面被加载另一个应用程序的状态(例如从该应用程序的交换空间),然后映射到地址空间。
有关更多信息,请阅读virtual memory上的维基百科页面。