我试图了解HotSpotJVM的内存结构,但对“方法区”和“PermGen”空间这两个术语感到困惑。我提到的文档说方法区包含类和方法的定义,包括字节码。其他一些文档说它们存储在PermGen空间中。那么我可以断定这两个内存区域相同吗? 最佳答案 你应该看看JavaMemoryTypes并可选择在本文档中了解GarbageCollection在java。后者非常冗长,但两者都很有用。其实方法区是永久代的一部分:Athirdgenerationcloselyrelatedtothetenuredgenerationistheperman
我读了几篇文章,我理解了以下内容(如果我错了,请纠正我和/或编辑问题):java堆是这样分割的:YoungGeneration:创建的对象放在这里,这部分被频繁且廉价地垃圾收集OldGeneration:在Younggeneration的垃圾收集中幸存下来的对象放在这里,这个区域的垃圾收集频率较低,并且使用对CPU要求更高的进程/算法(我相信它称为标记清除)编辑:正如另一位用户所述,PermGen不是名为heap的区域的一部分PermGen:此区域包含您的应用类元数据和许多其他不依赖于应用使用情况的内容。那么,知道这一点……为什么我的PermGen空间会在应用程序负载很重时增长?对于我
限制JavaJVM上Permgen空间大小的目的是什么?为什么不总是将它设置为等于最大堆大小?为什么Java默认为64MB这么小的数字?他们是否试图通过这样做来强制人们注意代码中的permgen问题?如果我的应用程序使用85MB的permgen,那么将它设置为96MB可能是安全的,但如果它真的只是主堆的一部分,为什么要将它设置得这么小呢?允许JVM使用堆允许的尽可能多的PermGen不是很有效吗? 最佳答案 PermGen设置为在JDK8中消失。WhatwouldbethepurposeoflimitingthesizeoftheP
编辑:-play~run运行我的项目如何解决这个问题,我的项目处于测试阶段。每天5-6小时后它会突然停止并给出以下错误。如何消除此错误?我正在使用playframework2.2在scala2.1中开发这个项目java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:PermGenspaceatjava.util.concurrent.FutureTask.report(FutureTask.java:122)atjava.util.concurrent.FutureTask.get(FutureTask.ja
编辑:-play~run运行我的项目如何解决这个问题,我的项目处于测试阶段。每天5-6小时后它会突然停止并给出以下错误。如何消除此错误?我正在使用playframework2.2在scala2.1中开发这个项目java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:PermGenspaceatjava.util.concurrent.FutureTask.report(FutureTask.java:122)atjava.util.concurrent.FutureTask.get(FutureTask.ja
我正在标准Lift平台(maven和jetty)上进行开发。我反复(每两天一次)得到这个:Exceptioninthread"7048009@qtp-3179125-12"java.lang.OutOfMemoryError:PermGenspace2009-09-1519:41:38.629::WARN:handlefailedjava.lang.OutOfMemoryError:PermGenspace这是在我的开发环境中。这不是问题,因为我可以继续重新启动服务器。在部署中我没有这些问题,所以这不是一个真正的问题。我只是好奇。我对JVM了解不多。我认为我认为永久代内存用于类和实习字
我正在标准Lift平台(maven和jetty)上进行开发。我反复(每两天一次)得到这个:Exceptioninthread"7048009@qtp-3179125-12"java.lang.OutOfMemoryError:PermGenspace2009-09-1519:41:38.629::WARN:handlefailedjava.lang.OutOfMemoryError:PermGenspace这是在我的开发环境中。这不是问题,因为我可以继续重新启动服务器。在部署中我没有这些问题,所以这不是一个真正的问题。我只是好奇。我对JVM了解不多。我认为我认为永久代内存用于类和实习字
是否可以从Tomcat中获取线程转储?我想在某个时间点监控Tomcat中运行的线程。注意:我在Web逻辑上这样做,但我不知道如何在Tomcat上完成。 最佳答案 如果您使用Linux,您可以发送kill-3[您的tomcat的pid],它将转储catalina.out中的所有当前线程。 关于java-Tomcat线程转储,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/185734
是否可以从Tomcat中获取线程转储?我想在某个时间点监控Tomcat中运行的线程。注意:我在Web逻辑上这样做,但我不知道如何在Tomcat上完成。 最佳答案 如果您使用Linux,您可以发送kill-3[您的tomcat的pid],它将转储catalina.out中的所有当前线程。 关于java-Tomcat线程转储,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/185734
看起来像MemoryError:PermGenspacejava.lang.OutOfMemoryError:PermGenspace是一个常见的问题。您可以增加perm空间的大小,但在100或200次重新部署后它将被填满。跟踪ClassLoader内存泄漏几乎是不可能的。您在生产服务器上使用Tomcat(或另一个简单的servlet容器-Jetty?)的方法是什么?每次部署解决方案后是否重新启动服务器?您是否将一个Tomcat用于多个应用程序?也许我应该在不同的端口(或嵌入式Jetty)上使用多个Jetty服务器,并且每次都取消部署/重新启动/部署? 最佳