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