我知道JDK 7应该是hotspot和jrockit之间的合并,并且不会有jrockit 1.7。 (来源:https://blogs.oracle.com/henrik/entry/java_7_questions_answers)我有一个项目需要jrockit的非连续堆特性以及一些java 1.7特性,因为由于JDK 7是一个合并器,它是否支持非连续堆,因为我找不到一个官方这样说的文档?JDK 7是否使用非连续堆?
回答
我认为你问的是非连续的堆,因为你正在遭受内存碎片。很多时候你的32位地址空间是分段的,但你的64位地址空间不是。这意味着,如果您的计算机具有足够的内存,则使用64位JVM将允许您查找32位JVM不会访问的连续内存。当32位JVM未能分配超过2GB的堆时,我个人使用64位JVM来分配超过4GB的堆。
虽然它看起来不像任意的非连续堆,但它使它成为JDK 7,您可以尝试使用G1垃圾回收器。根据http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html:
堆被划分为一组大小相等的堆区域,每个虚拟存储器的连续范围的。
从理论上讲,这可以让你玩一个非连续的堆。唯一的限制是地区必须具有相同的规模。
根据http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html#t6可以使用该命令行选项来控制区域大小:
-XX:G1HeapRegionSize =正:随着G1 Java堆被细分成均匀大小的区域。这设定了各个子部门的大小。该参数的默认值根据堆大小以人体工程学方式确定。最小值为1Mb,最大值为32Mb。
我希望这会有所帮助。
听起来不错,但我做了一些测试,它表现相同。他们可能意味着连续的堆被分割以获得更好的GC。 但有些奇怪。我指定1g和visualVM显示我最多2g ... – Stroboskop 2014-07-29 17:22:01
- 1. 堆栈是否连续增长?
- 2. mmap是否连续分配堆内存?
- 3. 是否有内置的Android类用于非连续创建XML?
- 4. JDK 7
- 5. 使用“For ... Next”与非连续数字
- 6. 是否可以使UITable连续?
- 7. 是否有“连续”版本?
- 8. 是否有可能使用非连续的命名范围填充列表框?
- 9. 是否有可用的构建演示新的JDK 7功能?
- 10. 非连续计数
- 11. 非连续UISlider iOS
- 12. 非连续滑块
- 13. 非连续范围
- 14. IBM JDK 7 SSL连接不工作
- 15. 如何知道我是否在使用Open JDK或Oracle JDK?
- 16. 守则适用于Windows的JDK 7,但不是在Linux上JDK 7
- 17. 使用jdk 7的新fork连接框架的性能问题
- 18. TFS 2010是否支持非连续合并?
- 19. 如何知道你是否有Python中的非连续列表?
- 20. 是否连续调用errno来避免?
- 21. pkt_data是否连续占用内存?
- 22. Eclipse和JDK 7
- 23. HashMap和JDK 7
- 24. Android工作室总是使用JDK 7并且不切换到JDK 8
- 25. 连续7个元素
- 26. 查找JDK是否为openJDK或Oracle JDK
- 27. Java中是否有简写的方法来连续调用一堆类方法?
- 28. Android应用连续进行堆操作
- 29. 是否[NSOperationQueue mainQueue]保证是连续的?
- 30. 如何注册APK使用JDK 7
在您的链接页面上,您的问题未得到解答,问题是“融合的JVM是否会获得允许JRockit在Windows上分配更多堆的功能?” – 2012-08-10 10:10:34