<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lysu'''

    追求借鑒任何有益事物

    Sun HotSpot JVM內存管理及垃圾收集

    轉自:http://blog.csdn.net/watchnight/archive/2009/12/11/4987065.aspx

    內存模型(內存池)

    從上圖可以看出,一個java進程主要分為“Java Heap”和“C Heap”兩個部分。只有“Java Heap”是JVM的GC對象。

    從J2SE 5.0開始,JVM啟動時會默認選擇按“server VM ”啟動還是按“client VM ”,具體選擇策略參照下面的連接。

    Server-Class Machine Detection

    啟動方式選擇好以后,開始選擇GC方法,根據GC方法的不同,為每塊內存池設置不同的默認值。關于GC方法的選擇,參照下面的連接。

    Garbage Collector Ergonomics

    另外,JVM一共提供了4中GC方法,根據業務的不同,可以選擇不同的GC方法。GC方法詳細介紹,參見下面的連接。

    Memory Management Whitepaper [pdf]

    根據GC算法的不同,GC的名字,以及內存池的名字都不一樣。

    J2SDK 5提供了一些MXBean,通過這些MXBean可以取得具體的名字。

    如:java.lang.management.GarbageCollectorMXBean和java.lang.management.MemoryMXBean

    (1)-XX:+UseConcMarkSweepGC

     GC名:

       ParNew

       ConcurrentMarkSweep

     內存池名:

       CMS Perm Gen

       Par Eden Space

       Par Survivor Space

       Code Cache

       CMS Old Gen

    (2)-XX:+UseParallelGC

     GC名:

       PS Scavenge

       PS MarkSweep

     內存池名:

       PS Survivor Space

       PS Perm Gen

       PS Old Gen

       PS Eden Space

       Code Cache

    (3)-XX:+UseParallelOldGC

     GC名:

       PS Scavenge

       PS MarkSweep

     內存池名:

       PS Survivor Space

       PS Perm Gen

       PS Old Gen

       PS Eden Space

       Code Cache

    (4)-XX:+UseSerialGC

     GC名:

       Copy

       MarkSweepCompact

     內存池名:

       Survivor Space

       Perm Gen

       Tenured Gen

       Eden Space

       Code Cache

    關于"Code Cache"的說明,資料比較少,下面的連接中,只有一句介紹,對普通程序員來說也夠用了。

    http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

    我們可以看到,每種算法,GC都是有兩個,一個是minor collection,一個是major collection(也叫FullGC)。

    JVM還提供了一個System.gc(),讓程序員主動GC,System.gc()是minor還是major?答案是major。參見下面的連接。

    http://java.sun.com/docs/hotspot/gc1.4.2/faq.html

    從 Java SE 6 Update 14開始,又增加了一個名叫G1的垃圾收集算法。跟前面的4種內存管理模式完全不一樣。

    具體沒有研究過,算法詳細參見下面的連接。

    http://java.sun.com/javase/technologies/hotspot/gc/g1_intro.jsp

    JVM中的Object是如何分配,如何收集的?什么時候使用minor什么時候使用major?什么時候發生OutOfMemoryException?

    關于這個問題,HP網站上有一篇詳細介紹GC的PPT,值得一看。

    Memory Management and Garbage Collection (PDF, 1.4MB)

    posted on 2011-12-25 16:32 lysu 閱讀(1069) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久九九免费高清视频| 亚洲国产成人久久综合一| 久久久国产亚洲精品| 久99久精品免费视频热77| 亚洲成亚洲乱码一二三四区软件| 国产精品免费观看视频| 亚洲中文字幕成人在线| fc2免费人成为视频| 精品国产亚洲一区二区三区| 国产免费一区二区三区不卡| 亚洲精品国产成人99久久| 99免费在线观看视频| 亚洲一区二区三区免费在线观看| 最新仑乱免费视频| 亚洲av无码有乱码在线观看| 免费成人在线观看| 久久精品成人免费国产片小草| 亚洲乱码精品久久久久..| 在线免费中文字幕| 亚洲另类春色校园小说| 99在线视频免费观看视频 | 亚洲AV无码一区二区一二区 | 美女巨胸喷奶水视频www免费| 亚洲av无码一区二区三区不卡| 无码精品国产一区二区三区免费| 亚洲成人黄色在线观看| 午夜视频免费成人| 一进一出60分钟免费视频| 久久精品亚洲视频| 免费a级毛片无码a∨蜜芽试看| 高潮毛片无遮挡高清免费视频| 国产精品亚洲mnbav网站| 久久精品免费观看国产| 亚洲专区一路线二| 一本色道久久88亚洲综合| 曰批全过程免费视频在线观看无码| 久久亚洲精品成人综合| 日韩视频免费一区二区三区| 鲁丝片一区二区三区免费| 亚洲永久网址在线观看| 亚洲国产精品无码中文字|