是一个“静态最终”直接分配到年轻的gen或老gen或perm gen吗? (我想这很可能会在我想象的时间内落入旧有的)。如果它被分配在烫发中,那么当在彼尔姆根课堂卸载时它会被垃圾收集吗?哪里做了一个“静态final”直接分配进去?年轻的gen或老gen或perm gen?
2
A
回答
5
是一个“静态最终”直接分配到年轻的gen或老gen或perm gen吗?
由static final
变量引用的对象将根据与任何其他对象相同的规则进行分配。最有可能分配给年轻一代或老一代(如果规模较大且适用其他某些条件)。
该对象将被分配new
执行在一些任意代码。 JVM无法知道该对象将(最终)被分配给一个static final
变量。
包含静态变量的帧的空间可能分配在permGen中。当然,这不是一个普通的Java对象。
如果它是在perm gen中分配的,那么当在Perm Gen上的类卸载发生时它会被垃圾收集吗?
这取决于permGen是否被垃圾收集。在现代的JVM中,我期望被卸载的类静态引用的对象将被垃圾收集到同一个GC循环中,或者下一个......假设它们无法访问。
无论哪种方式,您都不应该编写您的应用程序来依赖任何这些细节。它们是JVM特定的。
+2
+1“无论哪种方式,你都不应该编写你的应用程序来依赖任何这些细节,它们是特定于JVM的。”静态最终,意味着它是静态的和最终的。似乎有危险承担更多... – bwawok 2010-09-27 03:27:20
相关问题
- 1. 内存不足:Perm Gen Space
- 2. 面向weblogic中的perm gen space错误
- 3. JVM YoungGen 0%,Perm Gen 99%,OldGen Full
- 4. 在年轻的gen GC中存活的物体的百分比?
- 5. While Loop和gen rand()
- 6. Intellij android资源gen
- 7. Scala类定义对perm gen空间的影响
- 8. 将Java ClassLoaders添加到堆而不是perm gen
- 9. src/com.app.main && gen/com.app.main是同一个包吗?
- 10. Modelsim在一个gen实例上中断
- 11. seam-gen vs eclipse seam web project
- 12. protoc-gen-javanano没有找到
- 13. gen update rake -bash:gen:command not found
- 14. 除了Class对象之外,还存储在Perm Gen Space(sun 1.6 VM)中?
- 15. .xsd数据集的代码gen模板在哪里?
- 16. 当分叉时,子JVM会“继承”最大堆大小和perm gen大小吗?
- 17. 盖茨比静态网站gen。 &发布新内容
- 18. java哪里去了一年?
- 19. 有没有办法从Gen <a>到Gen <a list>,同时指定一个绑定?
- 20. Erlang Gen Server之间的通信
- 21. LLBL Gen Pro中的子查询
- 22. Python:Powerball Gen.列表的追加列表
- 23. 查找gen列表中SNP的位置
- 24. propel-gen的“convert-conf”目标失败
- 25. SQL gen之类的登录标识
- 26. <*>实例<gen[1].*>未连接或连接到无负载信号
- 27. Visual Studio宏 - 代码Gen语言
- 28. Load Runner VU Gen无法记录HTTP
- 29. 是否有任何robovm bro-gen文档
- 30. padrino-gen migration create_indexes不起作用
除非以调试模式运行,否则无法卸载类,因此静态最终声明从不会被JVM收集垃圾,直到应用程序结束。 – 2010-09-27 00:36:54
@Yanick - 实际上,使用'Class.forName()'加载的任何类都可能变得无法访问,并且会受到卸载/垃圾回收......取决于JVM选项。 – 2010-09-27 01:44:45
@Stephen C,真实。然而,这是假定这个类实际上是GC的候选者,并且JVM被设置为允许它。在大多数情况下,它不会发生。但我想我现在要脱离主题... – 2010-09-27 02:26:39