JVM虛擬機內存結構

JVM內存結構java

項目中的數據是怎麼運行的呢?程序員

java文件編譯後運行就變成了class文件spa

class文件經過類加載器存入內存空間中對象

內存空間:內存

    方法區:保存了static和class的信息 ,且在方法區中是永久保存的,垃圾回收機制(GC)是不會回收的資源

    通常由程序員分配釋放,保存了new出來的信息,在堆中垃圾回收機制(GC)是會回收的開發

    堆內存中又分爲新生代和老生代編譯器

        新生代:不常用的對象存在的地區(GC回收的次數比較多的)編譯

            eden:當new出來的時候就會在eden中,也是GC常常回收的一個區class

            注:S1和S2功能是同樣的,大小也是同樣的

            S1(from):new出來後一段時間就會保存在這裏

            S2(to):new出來後一段時間就會保存在這裏

        老年代: 常用的對象存放的地區 (GC回收的次數比較少的)

            當你常用一個對象的時候,就會自動的保存到老年代

    由編譯器自動分配釋放,保存了臨時信息,即便用的方法,在棧中會自動釋放資源,

        常見問題:棧內存會不會內存溢出呢?

        答案:        會的,例如死循環或者在類中調用本類,它們會一直循環知道大於棧內存的深度就會內存溢出

    本地方法棧:在安卓開發中底層是c語言,本地方法棧表示用java調用c語言

    垃圾回收機制(gc):回收堆內存中的數據

相關文章
相關標籤/搜索