我将java堆大小设置max / min定义为8 GB。系统内存为14 GB。除了tomcat之外,没有其他java进程在运行。我看到java使用大约12 GB,因此系统失效。在Java堆之外消耗超过4 GB的其他东西是什么 permsize只有256 MB。
答案 0 :(得分:0)
对于32位JDK,总虚拟内存地址为4G大小。忽略MAX 3G上的内核空间可以由java和本机堆使用。在64位JDK的情况下,虚拟内存地址是无限的。你提到的系统内存是RAM大小。系统内存和虚拟内存不同。 Java堆不会比指定的-Xmx值扩展。如果Xmx设置为8GB,当它达到8GB时它不会进一步扩展,如果应用程序没有找到分配空间,那么java将抛出OutOfMemory异常。
答案 1 :(得分:0)
我得到了答案。我们的应用程序使用的是bytearray,它消耗外部堆,从而消除行为上的差异。