jvm 中java new 對象順序


  

如圖所示:

   當java 中new 新實例化一個對象時,在jvm中加載的順序是如圖所示的,首先classLoader 加載類后,先將 一些變量屬性,靜態常量,對象等等,放入jvm 堆中的永久代,棧中存儲的基礎數據類型的對象和自定義對象的引用(不是對象)。

  方法區中存放的是程序中的方法。

  程序運行后,加載程序運行邏輯,永久代加載對象和變量,常量后,年輕代的Eden區加載運行的方法,然后Eden區隨機的將運行數據分配到suvior區,兩個suvior區采用復制回收算法,將數據分配。

  當suvior區加載滿后,數據回收到java 堆的老年代,老年代中采用標記清除算法,老年代中運行的數據,當達到一定的周期和生命后,老年代會將標記的數據逐漸清除回收掉。

注:

1.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身

 2.每個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象),對象都存放在堆區中

 3.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM