Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java内存泄漏是否可能使用比堆更多的内存;永久基因?_Java_Memory_Memory Leaks_Jvm - Fatal编程技术网

Java内存泄漏是否可能使用比堆更多的内存;永久基因?

Java内存泄漏是否可能使用比堆更多的内存;永久基因?,java,memory,memory-leaks,jvm,Java,Memory,Memory Leaks,Jvm,在任何情况下,Java应用程序(例如Tomcat servlet应用程序)中的泄漏是否可能超过分配的内存并使用额外的系统内存,或者JVM的分配堆是否真的从(剩余的)操作系统/内核内存进行防火墙(也就是说)?我在使用Java 6和7的2.6内核Linux中工作,但这更像是一个一般性问题。是的-这是可能的。Java内存区域被划分为几个区域——heap和permgen并不是全部。还有代码缓存和本机内存区域,这在所有堆结构中都非常流行。请看幻灯片7,当然,这是可能的。简单的例子有ByteBuffer.a

在任何情况下,Java应用程序(例如Tomcat servlet应用程序)中的泄漏是否可能超过分配的内存并使用额外的系统内存,或者JVM的分配堆是否真的从(剩余的)操作系统/内核内存进行防火墙(也就是说)?我在使用Java 6和7的2.6内核Linux中工作,但这更像是一个一般性问题。

是的-这是可能的。Java内存区域被划分为几个区域——heap和permgen并不是全部。还有代码缓存和本机内存区域,这在所有堆结构中都非常流行。请看幻灯片7,当然,这是可能的。简单的例子有
ByteBuffer.allocateDirect()
FileChannel.map()
。这些缓冲区的内容超出了Java堆。

是。JVM可以通过多种方式使用内存,而不是通过Java堆。例如,默认情况下,每个线程的堆栈都需要2Mb。如果你描述你所看到的问题,也许有人会帮你解决。这实际上是一个一般性的问题。我与一些Java开发人员进行了一次电话会议,我建议内存泄漏可能会吞噬堆外的系统内存,项目的高级开发人员告诉我这是不可能的。我不同意这是不可能的,但我不知道具体细节,我相信我在过去见过这种情况。那场演讲看起来很滑稽。我喜欢这些照片。