日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jvm中的年轻代 老年代 持久代 gc ----------转载

發布時間:2024/1/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jvm中的年轻代 老年代 持久代 gc ----------转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jvm中的年輕代 老年代 持久代 gc
虛擬機中的共劃分為三個代:年輕代(Young Generation)、老年代(Old Generation)和持久代(Permanent Generation)。其中持久代主要存放的是Java類的類信息,與垃圾收集要收集的Java對象關系不大。年輕代和年老代的劃分是對垃圾收集影響比較大的。

年輕代:

所有新生成的對象首先都是放在年輕代的。年輕代的目標就是盡可能快速的收集掉那些生命周期短的對象。年輕代分三個區。一個Eden區,兩個Survivor區(一般而言)。大部分對象在Eden區中生成。當Eden區滿時,還存活的對象將被復制到Survivor區(兩個中的一個),當這個Survivor區滿時,此區的存活對象將被復制到另外一個Survivor區,當這個Survivor去也滿了的時候,從第一個Survivor區復制過來的并且此時還存活的對象,將被復制“年老區(Tenured)”。需要注意,Survivor的兩個區是對稱的,沒先后關系,所以同一個區中可能同時存在從Eden復制過來 對象,和從前一個Survivor復制過來的對象,而復制到年老區的只有從第一個Survivor去過來的對象。而且,Survivor區總有一個是空的。同時,根據程序需要,Survivor區是可以配置為多個的(多于兩個),這樣可以增加對象在年輕代中的存在時間,減少被放到年老代的可能。

年老代:

在年輕代中經歷了N次垃圾回收后仍然存活的對象,就會被放到年老代中。因此,可以認為年老代中存放的都是一些生命周期較長的對象。

持久代:

用于存放靜態文件,如今Java類、方法等。持久代對垃圾回收沒有顯著影響,但是有些應用可能動態生成或者調用一些class,例如Hibernate等,在這種時候需要設置一個比較大的持久代空間來存放這些運行過程中新增的類。持久代大小通過-XX:MaxPermSize=進行設置。

Scavenge GC

一般情況下,當新對象生成,并且在Eden申請空間失敗時,就會觸發Scavenge GC,對Eden區域進行GC,清除非存活對象,并且把尚且存活的對象移動到Survivor區。然后整理Survivor的兩個區。這種方式的GC是對年輕代的Eden區進行,不會影響到年老代。因為大部分對象都是從Eden區開始的,同時Eden區不會分配的很大,所以Eden區的GC會頻繁進行。因而,一般在這里需要使用速度快、效率高的算法,使Eden去能盡快空閑出來。

Full GC

對整個堆進行整理,包括Young、Tenured和Perm。Full GC因為需要對整個對進行回收,所以比Scavenge GC要慢,因此應該盡可能減少Full GC的次數。在對JVM調優的過程中,很大一部分工作就是對于FullGC的調節。有如下原因可能導致Full GC:

· 年老代(Tenured)被寫滿

· 持久代(Perm)被寫滿

· System.gc()被顯示調用

·上一次GC之后Heap的各域分配策略動態變化

看一段日志:

復制代碼
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Exception in thread "http-bio-17788-exec-74"
java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-bio-17788-exec-75"
java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-bio-17788-exec-76"
java.lang.OutOfMemoryError: PermGen space
復制代碼
明顯可以看出是老年代的內存溢出,說明在容器下的靜態文件過多,比如編譯的字節碼,jsp編譯成servlet,或者jar包。

解決此問題,修改jvm的參數 permsize即可,permsize初始默認為64m。

jvm內存參數

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 說明后面是VM的參數,所以后面的其實都是JVM的參數了
-Xms128m JVM初始分配的堆內存
-Xmx512m JVM最大允許分配的堆內存,按需分配
-XX:PermSize=64M JVM初始分配的非堆內存
-XX:MaxPermSize=128M JVM最大允許分配的非堆內存,按需分配

堆(Heap)和非堆(Non-heap)內存

按照官方的說法:“Java 虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在 Java 虛擬機啟動時創建的。”“在JVM中堆之外的內存稱為非堆內存(Non-heap memory)”。
可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的,

轉載于:https://www.cnblogs.com/gloxing/p/8663965.html

總結

以上是生活随笔為你收集整理的jvm中的年轻代 老年代 持久代 gc ----------转载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品无人区 | av在线手机观看 | 日本视频一区二区 | 成人av免费在线看 | 亚洲欧洲精品视频 | 国产精品久久久久毛片大屁完整版 | 无码人妻h动漫 | 亚洲欧美日韩网站 | 日本精品视频在线观看 | 午夜免费精品 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 乱色专区 | 在线观看入口 | 农村末发育av片一区二区 | 成年人在线免费观看 | 日韩电影福利 | 日本a视频在线观看 | 日韩精品在线看 | 成人看片在线 | 久久爱综合 | 亚洲最大成人av | 成人性生交大片免费 | 亚洲国产日本 | 国产精品毛片一区二区三区 | 日韩大片免费观看视频播放 | 波多野结衣一区在线 | av在线高清观看 | 成人日b视频 | 在线观看视频福利 | 国产一级在线观看视频 | 国产探花视频在线观看 | 国产视频一区二区三区在线播放 | 日韩视频免费观看高清 | 亚洲va天堂va国产va久 | 强伦人妻一区二区三区视频18 | 国内成人自拍 | 国产亚洲欧美精品久久久久久 | 丰满人妻综合一区二区三区 | 少妇精品亚洲一区二区成人 | 日韩一中文字幕 | 欧美激情啪啪 | 欧美精品色 | 都市激情亚洲 | 五月婷婷综合激情网 | 老牛影视av一区二区在线观看 | 你懂的在线观看视频 | 手机在线免费视频 | 男女国产视频 | 国产婷婷色一区二区 | 精品视频一区二区三区四区 | 光棍影院手机版在线观看免费 | 国产又粗又猛又爽又黄的 | 四虎精品在永久在线观看 | 欧美人妻精品一区二区免费看 | 久久久精品视频在线 | 青娱乐久久 | 日韩欧美影院 | 男女羞羞在线观看 | 丁香综合网 | 色婷婷五 | 亚洲激情小视频 | 特大巨交吊性xxxx | 国产a级大片 | 亚洲特黄毛片 | 国产精品高潮呻吟AV无码 | 无码国产伦一区二区三区视频 | www.555国产精品免费 | 超碰天天 | 日韩三级黄色片 | 性歌舞团一区二区三区视频 | 丰满人妻熟女aⅴ一区 | 欧美成人免费观看 | 69xav| 超碰pron| 国产一级18片视频 | 久久天堂视频 | h片在线 | 黄黄的视频在线观看 | 综合久久婷婷 | 深夜福利一区二区 | 国产精品污污 | 插插插网站| 丰满人妻综合一区二区三区 | 性一交一黄一片 | 国产精品久久毛片av大全日韩 | 美女视频黄a视频全免费观看 | 国产黄av| 国产精品久久久久久久一区探花 | 久久精品国产精品亚洲色婷婷 | 97人妻天天摸天天爽天天 | 日韩激情第一页 | 91成人福利| 天天看天天色 | av中文字幕一区二区三区 | 国语对白做受69 | 高清久久久久久 | ww成人 | 激情五月综合色婷婷一区二区 | 人人入人人 |