在任何情况下,Java应用程序(例如Tomcat servlet应用程序)中的泄漏是否有可能超出分配的内存并使用额外的系统内存,或者JVM的已分配堆是否真正具有防火墙(可以这么说)从(其余的)OS /内核内存?我在使用Java 6和7的2.6内核Linux工作,但这更像是一个普遍的问题。
答案 0 :(得分:2)
是的 - 这是可能的。 Java内存区域分为几个区域 - heap和permgen不是全部。还有代码缓存和本机内存的区域,这对于所有堆结构都非常流行。请查看this presentation
的幻灯片7答案 1 :(得分:1)
当然,这是可能的。简单示例包括ByteBuffer.allocateDirect()
和FileChannel.map()
。这些缓冲区的内容不在Java堆中。