JVM和.NET VM是否在运行时很明显地将对象生存期限制在特定范围内时分配堆栈上的对象?JVM和CLR分配优化
回答
JVM执行此操作。在适当的情况下,它实际上可以完全取消分配。
引用此article.
Java语言不提供任何办法明确分配堆栈上的对象,但这一事实并不妨碍JVM中的适当地方仍然使用堆栈分配。 JVM可以使用一种叫做逃逸分析的技术,通过这种技术他们可以知道某些对象在整个生命周期中都被限制在一个线程中,并且该生命周期受到给定栈帧的生命周期的限制。这些对象可以安全地分配到堆栈而不是堆上。更好的是,对于小型对象,JVM可以完全优化分配,并简单地将对象的字段提升到寄存器中。
有关Escape analysis的更多信息源自维基百科。
JVM的哪个版本执行此操作?更重要的是,最新的支持Escape Analysis? – 2011-02-13 20:02:17
Java 6更新14,您必须使用命令行选项启用它。 (-XX:+ DoEscapeAnalysis)。它看起来像在更新18中被删除,然后在更新21中再次添加。我不确定命令行选项是否仍然需要 - 但我会使用它只是安全的。 – 2011-02-14 14:09:40
- 1. shared_ptr分配优化
- 2. 智能JVM和JIT微优化
- 3. 了解JVM内存优化
- 4. Amazon EC2上的JVM优化
- 5. 如何在CLR和JVM中实现Object.GetHashCode()?
- 6. 从JVM调用CLR代码
- 7. WCF - 优化配置和IIS
- 8. iPhone分析和优化
- 9. 分析和优化编译
- 10. JVM选项以优化循环语句
- 11. 优化Ubuntu 14.04 Docker上的JVM
- 12. JVM闲置后JIT去优化
- 13. 我从哪里开始优化JVM?
- 14. 使用javascript分配值优化动画
- 15. 优化部分字典键匹配
- 16. x64的优点CLR
- 17. 本地化,MUI和CLR
- 18. 如何确保没有JVM和编译器优化出现
- 19. JVM JIT诊断工具和优化技巧
- 20. SQL查询优化 - 自然分配律加入和差异
- 21. Mysqltuner优化配置和表,报告
- 22. TFS领域,优化定义和配置
- 23. 优化PHP分页
- 24. 优化Mandelbrot分形
- 25. 通过网络发现和优化字典变化的分配方式
- 26. SQL SERVER CLR的优势
- 27. 配置VisualVM以可视化多个JVM
- 28. 如何分析和优化XSLT?
- 29. 分析和优化游戏android
- 30. JVM和CLR如何知道什么时候启动
你能详细说明它是什么时候*明显*吗?我不确定它...... – 2009-11-24 16:18:50
好吧来自C,C++世界,看起来很明显... 由于在Java和.NET中,VM知道每个对象的引用。如果你在一个方法中创建一个对象并且永远不会在其他地方传输,那么将它保存在堆栈中是有意义的。无论如何都存在用于传递参数的堆栈,为什么不能从超快(和超级简单)堆栈分配中受益呢? – 2009-11-24 17:18:45