g1

    0熱度

    2回答

    我目前正在研究最新的Java 8版本中的G1 GC。 我對「Humongous Allocation」有問題,所以我想知道我的區域大小有多大。 我怎樣才能找出區域大小有多大? 我該如何計算自己的區域大小? 由於

    5熱度

    2回答

    我的測試代碼: int SIZE = 1900; int[][] array = new int[SIZE][]; for (int i = 0; i < SIZE; i++) { array[i] = new int[1024 * 1024/4]; // 1MB Thread.sleep(10); if (i % 100 == 0 && i != 0) {

    0熱度

    1回答

    我在線看。但大多數文檔剛剛提到,因爲g1 gc是增量式的,可預測的收集沒有太多細節。

    1熱度

    1回答

    爲什麼G1得到較少的停頓時間,但較低的吞吐量(低吞吐量單元GC將運行在幾秒鐘內更多的總時間) 每我的理解中,內存被劃分成更小的部分,現在充滿了要在小於部分運行堆完整。實際上我們可以說現在沒有完整的GC,因爲它沒有在整個堆上運行,而是有多個併發運行的後臺線程,並首先清除那些包含最大死亡對象數量的內存塊。所以暫停時間很短。 吞吐量很低,因爲更大的內存被分成較小的塊,因爲多個GC線程必須在較小的塊而不是

    1熱度

    1回答

    JDK版本時: java version "1.7.0_91" OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.14.04.1) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode) GC/MEM參數: -Xms24g -Xmx24g -Xss256k

    1熱度

    1回答

    我試圖使用jstat分析Java進程與G1垃圾收集器的內存使用模式: jstat -gc <Process_ID> 60s 輸出類似於如下: S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 0.0 229376.0 0.0 229376.0 1998848.0 1253376.0 16646

    1熱度

    1回答

    我正在使用最近升級的應用程序,並且看到了我無法解釋的新行爲。收藏的模式看起來很不錯,但是在幾秒鐘內就可以連續完成超過10個G1的疏散集合(年輕)。他們似乎正在清理伊甸園的記憶,但我不明白爲什麼它如此迅速地填滿。 這是一個複雜的問題還是我做錯了什麼? (如果我發佈了太多細節,我可以編輯並刪除它)。 -XX:+UseG1GC -Xms10240m -Xmx10240m -XX:NewRatio=2 -

    1熱度

    1回答

    以下是我的GC日誌: 2016-08-16T01:45:35.968+0000: 62265.934: [GC pause (G1 Evacuation Pause) (young) Desired survivor size 473956352 bytes, new threshold 15 (max 15) - age 1: 12641224 bytes, 12641224 total

    2熱度

    1回答

    當我研究G1 GC時,我發現這篇文章:http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html。在那篇文章中,有如下內容: G1 GC是一個區域化和世代的垃圾收集器,這意味着Java對象堆(堆)被分成許多大小相同的區域。啓動時,Java虛擬機(JVM)設置區域大小。根據堆大小,區域大小可以從1 MB到32 MB不等。目標是不

    3熱度

    1回答

    我們目前有一個Java本機內存泄漏的問題。服務器相當大(40CPUS,128GB內存)。 Java堆大小是64G,我們運行了一個非常內存密集的應用程序,它將大量數據讀取到大約400個線程的字符串中,並在幾分鐘後將它們從內存中拋出。 所以堆堆積得非常快,但是堆上的東西變得過時,並且可以非常快速地被打開。所以我們必須使用G1來讓STW在幾分鐘內不會中斷。 現在,這似乎工作正常 - 堆足夠大,運行應用程