堆内存之外的java内存使用

堆内存之外的java内存使用,java,garbage-collection,heap-memory,Java,Garbage Collection,Heap Memory,我将java堆大小设置max/min定义为8GB。系统内存为14GB。除了tomcat,没有其他java进程在运行。我看到java使用了大约12GB的内存,所以系统就停机了。除了java堆之外,还有哪些东西消耗超过4GB permsize仅为256 mb。对于32位JDK,总虚拟内存地址为4G大小。java和本机堆可以在最大3G时忽略内核空间。在64位JDK的情况下,虚拟内存地址是无限的。您提到的系统内存是RAM大小。系统内存和虚拟内存是不同的。Java堆的扩展不会超过指定的-Xmx值。若Xmx

我将java堆大小设置max/min定义为8GB。系统内存为14GB。除了tomcat,没有其他java进程在运行。我看到java使用了大约12GB的内存,所以系统就停机了。除了java堆之外,还有哪些东西消耗超过4GB
permsize仅为256 mb。

对于32位JDK,总虚拟内存地址为4G大小。java和本机堆可以在最大3G时忽略内核空间。在64位JDK的情况下,虚拟内存地址是无限的。您提到的系统内存是RAM大小。系统内存和虚拟内存是不同的。Java堆的扩展不会超过指定的-Xmx值。若Xmx设置为8GB,那个么当它达到8GB时,它将不会进一步扩展,若应用程序并没有找到分配空间,那个么java将抛出OutOfMemory异常

我得到了答案。我们的应用程序使用的是bytearray,它消耗堆外的内存,因此在行为上存在差异。

您是如何衡量java的内存使用情况的?我使用jconsole查看堆内存使用情况,使用free-m查看系统内存
m
?我对此不熟悉。无论如何,我的目标是,您不应该查看虚拟内存占用,而应该查看驻留集大小。至于使用,内存映射/直接内存缓冲区文件可能会消耗java堆之外的额外内存。