标签: permanent-generation

java中的静态分配 - 堆,堆栈和永久生成

我最近一直在阅读java中的内存分配方案,并且由于我从各种来源阅读,因此有很多疑问.我已经收集了我的概念,并且我会要求完成所有要点并对它们进行评论.我开始知道内存分配是特定于JVM的,所以我必须事先说,我的问题是Sun特定的.

  1. 类(由类加载器加载)进入堆上的特殊区域:永久生成
  2. 与类名称,与类关联的对象数组,JVM使用的内部对象(如java/lang/Object)和优化信息等类相关的所有信息都会进入永久生成区域.
  3. 所有静态成员变量再次保留在"永久生成"区域中.
  4. 物体在不同的堆上:年轻一代
  5. 每个类只有一个方法的副本,无论是静态还是非静态方法.该副本放在永久生成区域.对于非静态方法,所有参数和局部变量都进入堆栈 - 只要对该方法进行具体调用,我们就会得到一个与之关联的新堆栈帧.我不确定静态方法的局部变量存储在哪里.他们是永久世代的堆吗?或者只是他们的引用存储在Permanent Generation区域,而实际的副本是在其他地方(Where?)
  6. 我也不确定方法的返回类型存储在何处.
  7. 如果对象(在年轻代中)需要使用静态成员(在永久生成中),则为它们提供对静态成员的引用&&它们被给予足够的存储空间来存储方法的返回类型等.

谢谢你经历这个!

java static memory-management permanent-generation

110
推荐指数
1
解决办法
6万
查看次数

PermGen与Lift和Jetty有关的问题

我正在开发标准的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是否应该能够处理大量的类?

干杯

memory jvm scala lift permanent-generation

41
推荐指数
2
解决办法
2万
查看次数

我如何发现永久世代中的东西

给定堆转储或正在运行的VM,如何发现永久代的内容是什么?我知道'jmap -permstat'但是在Windows上不可用.

java memory garbage-collection permanent-generation permgen

11
推荐指数
1
解决办法
8509
查看次数

JVM 性能调优:年轻副本与老年代 gc

您好:我有一个多线程 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

2
推荐指数
1
解决办法
987
查看次数

永久运行可执行文件

我使用VS 2005(c#)创建了一个winform(监控)应用程序,现在,当这个应用程序由于某种原因崩溃时我遇到了问题,我必须确保它会自动重启.

我该如何解决这个问题?(也许通过使用Windows服务应用程序?)

谢谢

c# windows-services permanent-generation winforms

0
推荐指数
2
解决办法
1034
查看次数