JVM內存管理之java中需要使用內存的組件

一:Java堆

java堆是存儲java對象的內存區域,JVM在啓動時向操作系統申請堆的大小,也可以通過-Xmx 和-Xms兩個選項來控制堆的大小,但是使用這兩個選項後堆的大小就會固定,不能在向操作系統重新申請內存了

二:線程

線程是JVM運行實際程序的實體,但是線程需要內存空間來存儲一些必要的數據。每當一個線程被創建時,JVM會爲他創建一個堆棧,通常在256KB-756KB之間。
如果線程的數量過多,一:線程佔用的內存用量可能會很大,二:CPU的效率可能會很低,還會導致較差的性能和更高的內存佔用率。

三:類和類加載器

類和類加載器本身需要存儲空間,他們存儲在java堆中的永久代(PermGen);
JVM在加載類時時按需加載的。

四:NIO

NIO是一種基於通道和緩衝區的方式來執行IO操作。NIO並不使用Java堆中的內存,而是直接申請操作系統的內存,這種方式避免了在java堆和本機堆之間複製數據,從而提高了java的IO操作效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章