在JConsole中,我看到了不同的堆空間「Eden」,「Survivor」,「Old」。 他們有什麼區別?什麼是不同的Java堆空間?
0
A
回答
0
請參閱Memory Management in the Java HotSpotTM Virtual Machine白皮書。
Java將堆分成兩個稱爲'世代'的空間,即新一代和老一代。新一代進一步分爲伊甸園和倖存者空間。
擁有新一代和老一代的原因是因爲幾乎Java程序中的所有對象都只存在一小段時間,並且如果短期對象都可以在不檢查所有長期存在的對象的情況下解除分配,垃圾收集將會快得多。例如,一個程序通常具有配置設置和共享數據對象,這些對象在程序的整個生命週期中都存在,而像StringBuilders這樣的對象不斷被創建,在創建它們的方法甚至返回之前它們會變成垃圾。理想情況下,幾個方法調用後創建的所有臨時對象都可以立即回收,而不用浪費時間查看其他任何東西。
Java如何區分短壽命對象和長壽命對象?通過將它們放入不同的桶並計算它們存活的垃圾收集量。全新的物品進入伊甸園空間。伊甸園的空間通常都是垃圾收集的,但是在檢查時幾乎所有的東西都已經是垃圾了。少數不是垃圾的物體會移入Survivor空間。 Survivor空間中的對象被標記爲它們存活多少垃圾集合的計數。有些變得無法訪問,並且相對較快地獲得垃圾回收,但其他垃圾回收機制仍然可以訪問,並且在它們存活了一些閾值數量的垃圾回收後,Java假定它們是長壽命的對象,並將它們推廣到老一代。
相關問題
- 1. java堆空間
- 2. java堆空間
- 3. 的OutOfMemoryError(JAVA):Java堆空間
- 4. Java GC和Java堆空間使用的正常行爲是什麼?
- 5. Java堆空間(java.lang.OutOfMemoryError)
- 6. Java堆空間 - ByteArrayOutputStream.Write
- 7. Java堆空間:Applets
- 8. java java.lang.outofmemoryerror:java堆空間
- 9. Java堆空間outOfMemoryError
- 10. OutOfMemoryError Java堆空間
- 11. Java堆空間CompletionService
- 12. android java堆空間
- 13. Java Mission Control空間是什麼意思?
- 14. solr - 內存不足的java堆空間
- 15. java.lang.OutOfMemoryError:EntitySave上的Java堆空間
- 16. MapReduce中的Java堆空間
- 17. BlueJ的Java堆空間
- 18. java.lang.OutOfMemoryError:com.sun.crypto.provider.CipherCore.update上的Java堆空間
- 19. Java的堆空間了海量的免費堆空間
- 20. 堆棧中「缺失」的空間是什麼?
- 21. 內存不足java堆空間
- 22. Java堆空間 - 不能足夠大
- 23. Java堆空間::內存不足錯誤
- 24. 內存不足錯誤Java堆空間
- 25. Java內存不足:增加堆空間?
- 26. 內存不足錯誤,Java堆空間
- 27. java內存不足錯誤堆空間
- 28. Java堆空間內存不足
- 29. Java堆空間與GSON
- 30. Java堆空間蝕刻
這可能會幫助你瞭解:http://stackoverflow.com/questions/2129044/java-heap-terminology-young-old-and-permanent-generations –
谷歌Java內存模型 –