1. 程式人生 > >jvm內存區域----線程共享區

jvm內存區域----線程共享區

-- 性能 區域 它的 bsp 方法區 通過 font 分配

一、堆的含義

jvm堆的區域主要是用來存放對象的實例,它的空間大小是JVM內存區域中占比重最大的,也是jvm最大的內存管理模塊,最重要的是,這個區域是垃圾收集器主要管理的區域,這意味著我們在考慮垃圾回收優化的時候,首先就要想到堆中的區域。

二、方法區

方法區同樣是jvm的內存區域,它和堆一樣,都是線程共享區中的內存區域。方法區都主要存放的是jvm加載的類信息、常量、靜態變量、及時編譯的代碼類信息(這裏面主要有:1.類型的版本 2字段 3方法 4接口 5常量池)。在方法區中,一般不進行垃圾回收,因為回收效率比較低。

技術分享圖片

三、常量池

我們知道,方法區中及時編譯的代碼中有一個常量池,那什麽是常量池呢?一般來說,所有的字符串創建後都會放進常量池,常量池的數據結構是類似於HashSet的一種數據結構,我們知道HashSet的特點是無序、不重復的,那麽常量池也是這樣。但是,如果某個字符串是通過new關鍵字創建的,那麽這個字符串是在新的堆空間,是不會進入到常量池的,如果要想把這個字符串放進常量池,可以考慮使用intern方法,而用這個方法放進的常量池成為運行時常量池。

四、直接內存

直接內存是jvm外的內存,它不會受到jvm堆、棧的分配。java中的N I/O就是使用的直接內存。考慮到直接內存,是因為現在的tomcat9默認采用的是N I/O技術,而且直接內存的調控在硬件性能較差時有特別明顯的優點,它能夠很好的優化程序,使其能夠在理論基礎上滿足硬件性能較差的服務器上。

jvm內存區域----線程共享區