我最近一直在阅读java中的内存分配方案,并且由于我从各种来源阅读,因此有很多疑问.我已经收集了我的概念,并且我会要求完成所有要点并对它们进行评论.我开始知道内存分配是特定于JVM的,所以我必须事先说,我的问题是Sun特定的.
谢谢你经历这个!
我正在开发标准的Lift平台(maven和jetty).我反复(每隔几天一次)得到这个:
Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN: handle failed
java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)
这是在我的开发环境中.这不是问题,因为我可以继续重启服务器.在部署中我没有遇到这些问题所以这不是一个真正的问题.我只是好奇.
我不太了解JVM.我认为我认为永久代内存适用于类和内部字符串之类的东西是正确的吗?我记得有点混淆了.NET内存模型......
出现这种情况的原因是什么?默认值是否疯狂低?是否与Scala必须为Function对象和类似的FP事物创建的所有辅助对象有关?每当我用新编写的代码(每隔几分钟)重新启动Jetty时,我想它会重新加载类等等.但即便如此,它也不能用很多可以吗?JVM是否应该能够处理大量的类?
干杯
乔
给定堆转储或正在运行的VM,如何发现永久代的内容是什么?我知道'jmap -permstat'但是在Windows上不可用.
您好:我有一个多线程 Java 应用程序。有很多临时对象。
-XX:MaxTenuringThreshold=1, 我们在启动 JVM 时放置了上面的参数。这意味着所有对象都将在 gc 期间存活一次,然后将其提升到老年代。我们-XX:MaxTenuringThreshold=10可以举个例子,这样对象会在 10 次 gc 后提升到 old JVM old generation。但这是否会在年轻的 gc 期间导致不必要的复制操作(因为对象被复制“从 'eden' 到 'from'、从 'from' 到 'to'、'from'、'to' 是两个幸存者缓冲区)?
这些问题也可能意味着如果 a) 年轻代有多次复制,老年代 gc 少,b) 老年代垃圾收集时间长,但年轻代副本很少,哪个更好的性能更好?
java performance garbage-collection jvm permanent-generation
我使用VS 2005(c#)创建了一个winform(监控)应用程序,现在,当这个应用程序由于某种原因崩溃时我遇到了问题,我必须确保它会自动重启.
我该如何解决这个问题?(也许通过使用Windows服务应用程序?)
谢谢