日韩性视频-久久久蜜桃-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 ----------转载的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色戒未删节版 | 美国特色黄a大片 | 91精品国产入口在线 | 人妻大战黑人白浆狂泄 | 相亲对象是问题学生动漫免费观看 | 超碰在线网站 | 日韩毛片高清在线播放 | 一本大道久久a久久综合婷婷 | 一级特黄aa大片免费播放 | 久草大| 日韩毛片基地 | 91在线观看欧美日韩 | 91在线无精精品入口 | 欧美巨乳在线 | 天天夜碰日日摸日日澡性色av | 婷婷亚洲五月色综合 | 国产精品福利一区二区三区 | 99爱免费| 很黄很色的视频 | 久久66热这里只有精品 | 亚洲狠| 碰碰久久 | 中文字幕乱码无码人妻系列蜜桃 | 人善交videos欧美3d动漫 | 成人v精品蜜桃久一区 | 午夜寂寞院 | 欧美性极品| 国产精品久久久久久久久久 | 国产精品一二三四五 | 农村老妇性真猛 | 日韩av三区| 丝袜美腿亚洲一区二区图片 | 337p日本欧洲亚洲鲁鲁 | 99久久久久无码国产精品 | 99在线成人精品视频 | 国产伦理久久精品久久久久 | 精品自拍偷拍视频 | 免费午夜视频 | 国产午夜亚洲精品午夜鲁丝片 | 色婷五月天 | 国产网站黄 | 波多野结衣亚洲天堂 | 国产亚洲自拍一区 | 亚洲熟妇av日韩熟妇在线 | 国产资源在线视频 | 日本免费观看视频 | 成人手机在线视频 | 久久久综合视频 | 国内毛片视频 | 日韩精品在线第一页 | 欧美三级不卡 | 国产免费福利视频 | 日韩精品亚洲一区 | 97人人模人人爽人人少妇 | 国产精品国产三级国产a | 成a人v | 免费欧美一级视频 | 老太婆av | 亚洲欧美亚洲 | 超碰免费公开 | 淫久久| 永久免费在线播放 | 黄色成人在线免费观看 | 免费三级黄 | 91麻豆蜜桃一区二区三区 | 爱啪啪av | 91人妻一区二区三区蜜臀 | 日日干日日| 人日人视频 | 香蕉视频二区 | 动漫玉足吸乳羞免费网站玉足 | 91精品国产闺蜜国产在线闺蜜 | 一区二区精品在线 | 国产乱码在线观看 | 久久久久久av无码免费网站 | 人妻丰满熟妇av无码区hd | 久久亚洲AV无码专区成人国产 | 国产色啪| 欧美成人福利 | 美国av片 | 亚洲视频一区 | 日韩av在线影院 | japanese国产打屁股网站 | 国产成人中文字幕 | 稀缺小u女呦精品呦 | 91麻豆精品国产91久久久更新时间 | 91网站在线看 | 成人精品一区日本无码网 | 日韩av毛片在线观看 | 成人免费直播 | 中文字幕2018 | 亚洲色图第三页 | 九九视屏 | 与亲女洗澡时伦了毛片 | 国产又粗又黄又爽又硬的视频 | 中文字幕在线观看一区二区 | xxxxx国产| 日日夜夜av | 深夜福利亚洲 |