From c7157f6879bc0fcc5949aded16f733d4233f3cc4 Mon Sep 17 00:00:00 2001 From: Victoria Erokhina Date: Thu, 23 Jul 2020 11:52:38 +0300 Subject: [PATCH] Add binsearch by memory size --- gc.log | 230 +++++++++++++++++++++++++++++++++------- gc.log0 | 86 +++++++++++++++ src/main/kotlin/main.kt | 64 +++++++++-- 3 files changed, 334 insertions(+), 46 deletions(-) create mode 100644 gc.log0 diff --git a/gc.log b/gc.log index 602e42e..e4f7bec 100644 --- a/gc.log +++ b/gc.log @@ -1,41 +1,191 @@ -[0.008s][info][gc,heap] Heap region size: 1M -[0.008s][info][gc,heap,coops] Heap address: 0x00000007ffa00000, size: 6 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +[0.007s][info][gc,heap] Heap region size: 1M +[0.007s][info][gc,heap,coops] Heap address: 0x00000007fe800000, size: 24 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 [0.008s][info][gc ] Using G1 -[0.009s][info][gc,cds ] Mark closed archive regions in map: [0x00000007fff00000, 0x00000007fff7aff8] -[0.009s][info][gc,cds ] Mark open archive regions in map: [0x00000007ffe00000, 0x00000007ffe50ff8] -[0.024s][info][gc ] Periodic GC disabled -[0.064s][info][gc,start ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) -[0.064s][info][gc,task ] GC(0) Using 8 workers of 8 for evacuation -[0.065s][info][gc,phases ] GC(0) Pre Evacuate Collection Set: 0.0ms -[0.065s][info][gc,phases ] GC(0) Merge Heap Roots: 0.0ms -[0.065s][info][gc,phases ] GC(0) Evacuate Collection Set: 0.5ms -[0.065s][info][gc,phases ] GC(0) Post Evacuate Collection Set: 0.1ms -[0.065s][info][gc,phases ] GC(0) Other: 0.4ms -[0.065s][info][gc,heap ] GC(0) Eden regions: 2->0(1) -[0.065s][info][gc,heap ] GC(0) Survivor regions: 0->1(1) -[0.065s][info][gc,heap ] GC(0) Old regions: 0->0 -[0.065s][info][gc,heap ] GC(0) Archive regions: 2->2 -[0.065s][info][gc,heap ] GC(0) Humongous regions: 0->0 -[0.065s][info][gc,metaspace ] GC(0) Metaspace: 484K(5120K)->484K(5120K) NonClass: 452K(4608K)->452K(4608K) Class: 32K(512K)->32K(512K) -[0.065s][info][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 2M->1M(6M) 1.112ms -[0.065s][info][gc,cpu ] GC(0) User=0.00s Sys=0.00s Real=0.00s -[0.583s][info][gc,start ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) -[0.583s][info][gc,task ] GC(1) Using 8 workers of 8 for evacuation -[0.583s][info][gc,phases ] GC(1) Pre Evacuate Collection Set: 0.0ms -[0.583s][info][gc,phases ] GC(1) Merge Heap Roots: 0.0ms -[0.583s][info][gc,phases ] GC(1) Evacuate Collection Set: 0.3ms -[0.583s][info][gc,phases ] GC(1) Post Evacuate Collection Set: 0.1ms -[0.583s][info][gc,phases ] GC(1) Other: 0.1ms -[0.583s][info][gc,heap ] GC(1) Eden regions: 1->0(1) -[0.583s][info][gc,heap ] GC(1) Survivor regions: 1->1(1) -[0.583s][info][gc,heap ] GC(1) Old regions: 0->0 -[0.583s][info][gc,heap ] GC(1) Archive regions: 2->2 -[0.583s][info][gc,heap ] GC(1) Humongous regions: 1->0 -[0.583s][info][gc,metaspace ] GC(1) Metaspace: 1028K(5632K)->1028K(5632K) NonClass: 992K(5120K)->992K(5120K) Class: 36K(512K)->36K(512K) -[0.583s][info][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 3M->1M(6M) 0.760ms -[0.583s][info][gc,cpu ] GC(1) User=0.00s Sys=0.00s Real=0.00s -[0.773s][info][gc,heap,exit ] Heap -[0.774s][info][gc,heap,exit ] garbage-first heap total 6144K, used 1210K [0x00000007ffa00000, 0x0000000800000000) -[0.774s][info][gc,heap,exit ] region size 1024K, 2 young (2048K), 1 survivors (1024K) -[0.774s][info][gc,heap,exit ] Metaspace used 1035K, capacity 5304K, committed 5632K, reserved 1056768K -[0.774s][info][gc,heap,exit ] class space used 36K, capacity 424K, committed 512K, reserved 1048576K +[0.008s][info][gc,cds ] Mark closed archive regions in map: [0x00000007fff00000, 0x00000007fff7aff8] +[0.008s][info][gc,cds ] Mark open archive regions in map: [0x00000007ffe00000, 0x00000007ffe50ff8] +[0.022s][info][gc ] Periodic GC disabled +[0.123s][info][gc,start ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) +[0.123s][info][gc,task ] GC(0) Using 8 workers of 8 for evacuation +[0.124s][info][gc,phases ] GC(0) Pre Evacuate Collection Set: 0.0ms +[0.124s][info][gc,phases ] GC(0) Merge Heap Roots: 0.0ms +[0.124s][info][gc,phases ] GC(0) Evacuate Collection Set: 0.5ms +[0.124s][info][gc,phases ] GC(0) Post Evacuate Collection Set: 0.1ms +[0.124s][info][gc,phases ] GC(0) Other: 0.4ms +[0.124s][info][gc,heap ] GC(0) Eden regions: 10->0(11) +[0.124s][info][gc,heap ] GC(0) Survivor regions: 0->1(2) +[0.124s][info][gc,heap ] GC(0) Old regions: 0->0 +[0.124s][info][gc,heap ] GC(0) Archive regions: 2->2 +[0.124s][info][gc,heap ] GC(0) Humongous regions: 1->0 +[0.124s][info][gc,metaspace ] GC(0) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.124s][info][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 11M->1M(24M) 1.210ms +[0.124s][info][gc,cpu ] GC(0) User=0.00s Sys=0.01s Real=0.00s +[0.197s][info][gc,start ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) +[0.197s][info][gc,task ] GC(1) Using 8 workers of 8 for evacuation +[0.198s][info][gc,phases ] GC(1) Pre Evacuate Collection Set: 0.0ms +[0.198s][info][gc,phases ] GC(1) Merge Heap Roots: 0.1ms +[0.198s][info][gc,phases ] GC(1) Evacuate Collection Set: 0.5ms +[0.198s][info][gc,phases ] GC(1) Post Evacuate Collection Set: 0.3ms +[0.198s][info][gc,phases ] GC(1) Other: 0.2ms +[0.198s][info][gc,heap ] GC(1) Eden regions: 11->0(13) +[0.198s][info][gc,heap ] GC(1) Survivor regions: 1->1(2) +[0.198s][info][gc,heap ] GC(1) Old regions: 0->0 +[0.198s][info][gc,heap ] GC(1) Archive regions: 2->2 +[0.198s][info][gc,heap ] GC(1) Humongous regions: 0->0 +[0.199s][info][gc,metaspace ] GC(1) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.199s][info][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 12M->1M(24M) 1.142ms +[0.199s][info][gc,cpu ] GC(1) User=0.01s Sys=0.00s Real=0.00s +[0.276s][info][gc,start ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) +[0.276s][info][gc,task ] GC(2) Using 8 workers of 8 for evacuation +[0.277s][info][gc,phases ] GC(2) Pre Evacuate Collection Set: 0.0ms +[0.277s][info][gc,phases ] GC(2) Merge Heap Roots: 0.0ms +[0.277s][info][gc,phases ] GC(2) Evacuate Collection Set: 0.4ms +[0.277s][info][gc,phases ] GC(2) Post Evacuate Collection Set: 0.3ms +[0.277s][info][gc,phases ] GC(2) Other: 0.2ms +[0.277s][info][gc,heap ] GC(2) Eden regions: 13->0(13) +[0.277s][info][gc,heap ] GC(2) Survivor regions: 1->1(2) +[0.277s][info][gc,heap ] GC(2) Old regions: 0->0 +[0.277s][info][gc,heap ] GC(2) Archive regions: 2->2 +[0.277s][info][gc,heap ] GC(2) Humongous regions: 0->0 +[0.277s][info][gc,metaspace ] GC(2) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.277s][info][gc ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.945ms +[0.277s][info][gc,cpu ] GC(2) User=0.00s Sys=0.00s Real=0.00s +[0.356s][info][gc,start ] GC(3) Pause Young (Normal) (G1 Evacuation Pause) +[0.356s][info][gc,task ] GC(3) Using 8 workers of 8 for evacuation +[0.357s][info][gc,phases ] GC(3) Pre Evacuate Collection Set: 0.0ms +[0.357s][info][gc,phases ] GC(3) Merge Heap Roots: 0.1ms +[0.357s][info][gc,phases ] GC(3) Evacuate Collection Set: 0.4ms +[0.357s][info][gc,phases ] GC(3) Post Evacuate Collection Set: 0.3ms +[0.357s][info][gc,phases ] GC(3) Other: 0.1ms +[0.357s][info][gc,heap ] GC(3) Eden regions: 13->0(13) +[0.357s][info][gc,heap ] GC(3) Survivor regions: 1->1(2) +[0.357s][info][gc,heap ] GC(3) Old regions: 0->0 +[0.357s][info][gc,heap ] GC(3) Archive regions: 2->2 +[0.357s][info][gc,heap ] GC(3) Humongous regions: 0->0 +[0.357s][info][gc,metaspace ] GC(3) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.357s][info][gc ] GC(3) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 1.025ms +[0.357s][info][gc,cpu ] GC(3) User=0.01s Sys=0.00s Real=0.00s +[0.437s][info][gc,start ] GC(4) Pause Young (Normal) (G1 Evacuation Pause) +[0.437s][info][gc,task ] GC(4) Using 8 workers of 8 for evacuation +[0.438s][info][gc,phases ] GC(4) Pre Evacuate Collection Set: 0.0ms +[0.438s][info][gc,phases ] GC(4) Merge Heap Roots: 0.1ms +[0.438s][info][gc,phases ] GC(4) Evacuate Collection Set: 0.5ms +[0.438s][info][gc,phases ] GC(4) Post Evacuate Collection Set: 0.2ms +[0.438s][info][gc,phases ] GC(4) Other: 0.1ms +[0.438s][info][gc,heap ] GC(4) Eden regions: 13->0(13) +[0.438s][info][gc,heap ] GC(4) Survivor regions: 1->1(2) +[0.438s][info][gc,heap ] GC(4) Old regions: 0->0 +[0.438s][info][gc,heap ] GC(4) Archive regions: 2->2 +[0.438s][info][gc,heap ] GC(4) Humongous regions: 0->0 +[0.438s][info][gc,metaspace ] GC(4) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.438s][info][gc ] GC(4) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.995ms +[0.438s][info][gc,cpu ] GC(4) User=0.01s Sys=0.00s Real=0.00s +[0.529s][info][gc,start ] GC(5) Pause Young (Normal) (G1 Evacuation Pause) +[0.529s][info][gc,task ] GC(5) Using 8 workers of 8 for evacuation +[0.530s][info][gc,phases ] GC(5) Pre Evacuate Collection Set: 0.0ms +[0.530s][info][gc,phases ] GC(5) Merge Heap Roots: 0.0ms +[0.530s][info][gc,phases ] GC(5) Evacuate Collection Set: 0.5ms +[0.530s][info][gc,phases ] GC(5) Post Evacuate Collection Set: 0.3ms +[0.530s][info][gc,phases ] GC(5) Other: 0.2ms +[0.530s][info][gc,heap ] GC(5) Eden regions: 13->0(13) +[0.530s][info][gc,heap ] GC(5) Survivor regions: 1->1(2) +[0.530s][info][gc,heap ] GC(5) Old regions: 0->0 +[0.530s][info][gc,heap ] GC(5) Archive regions: 2->2 +[0.530s][info][gc,heap ] GC(5) Humongous regions: 0->0 +[0.530s][info][gc,metaspace ] GC(5) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.530s][info][gc ] GC(5) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 1.146ms +[0.530s][info][gc,cpu ] GC(5) User=0.00s Sys=0.00s Real=0.00s +[0.614s][info][gc,start ] GC(6) Pause Young (Normal) (G1 Evacuation Pause) +[0.614s][info][gc,task ] GC(6) Using 8 workers of 8 for evacuation +[0.615s][info][gc,phases ] GC(6) Pre Evacuate Collection Set: 0.0ms +[0.615s][info][gc,phases ] GC(6) Merge Heap Roots: 0.1ms +[0.615s][info][gc,phases ] GC(6) Evacuate Collection Set: 0.4ms +[0.615s][info][gc,phases ] GC(6) Post Evacuate Collection Set: 0.2ms +[0.615s][info][gc,phases ] GC(6) Other: 0.1ms +[0.615s][info][gc,heap ] GC(6) Eden regions: 13->0(13) +[0.615s][info][gc,heap ] GC(6) Survivor regions: 1->1(2) +[0.615s][info][gc,heap ] GC(6) Old regions: 0->0 +[0.615s][info][gc,heap ] GC(6) Archive regions: 2->2 +[0.615s][info][gc,heap ] GC(6) Humongous regions: 0->0 +[0.615s][info][gc,metaspace ] GC(6) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.615s][info][gc ] GC(6) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.872ms +[0.615s][info][gc,cpu ] GC(6) User=0.00s Sys=0.00s Real=0.00s +[0.697s][info][gc,start ] GC(7) Pause Young (Normal) (G1 Evacuation Pause) +[0.697s][info][gc,task ] GC(7) Using 8 workers of 8 for evacuation +[0.697s][info][gc,phases ] GC(7) Pre Evacuate Collection Set: 0.0ms +[0.697s][info][gc,phases ] GC(7) Merge Heap Roots: 0.1ms +[0.697s][info][gc,phases ] GC(7) Evacuate Collection Set: 0.4ms +[0.697s][info][gc,phases ] GC(7) Post Evacuate Collection Set: 0.1ms +[0.697s][info][gc,phases ] GC(7) Other: 0.1ms +[0.697s][info][gc,heap ] GC(7) Eden regions: 13->0(13) +[0.697s][info][gc,heap ] GC(7) Survivor regions: 1->1(2) +[0.697s][info][gc,heap ] GC(7) Old regions: 0->0 +[0.697s][info][gc,heap ] GC(7) Archive regions: 2->2 +[0.697s][info][gc,heap ] GC(7) Humongous regions: 0->0 +[0.697s][info][gc,metaspace ] GC(7) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.697s][info][gc ] GC(7) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.691ms +[0.697s][info][gc,cpu ] GC(7) User=0.01s Sys=0.01s Real=0.00s +[0.780s][info][gc,start ] GC(8) Pause Young (Normal) (G1 Evacuation Pause) +[0.780s][info][gc,task ] GC(8) Using 8 workers of 8 for evacuation +[0.780s][info][gc,phases ] GC(8) Pre Evacuate Collection Set: 0.0ms +[0.780s][info][gc,phases ] GC(8) Merge Heap Roots: 0.0ms +[0.780s][info][gc,phases ] GC(8) Evacuate Collection Set: 0.4ms +[0.780s][info][gc,phases ] GC(8) Post Evacuate Collection Set: 0.1ms +[0.780s][info][gc,phases ] GC(8) Other: 0.1ms +[0.781s][info][gc,heap ] GC(8) Eden regions: 13->0(13) +[0.781s][info][gc,heap ] GC(8) Survivor regions: 1->1(2) +[0.781s][info][gc,heap ] GC(8) Old regions: 0->0 +[0.781s][info][gc,heap ] GC(8) Archive regions: 2->2 +[0.781s][info][gc,heap ] GC(8) Humongous regions: 0->0 +[0.781s][info][gc,metaspace ] GC(8) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.781s][info][gc ] GC(8) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.716ms +[0.781s][info][gc,cpu ] GC(8) User=0.00s Sys=0.00s Real=0.00s +[0.872s][info][gc,start ] GC(9) Pause Young (Normal) (G1 Evacuation Pause) +[0.872s][info][gc,task ] GC(9) Using 8 workers of 8 for evacuation +[0.873s][info][gc,phases ] GC(9) Pre Evacuate Collection Set: 0.0ms +[0.873s][info][gc,phases ] GC(9) Merge Heap Roots: 0.1ms +[0.873s][info][gc,phases ] GC(9) Evacuate Collection Set: 0.4ms +[0.873s][info][gc,phases ] GC(9) Post Evacuate Collection Set: 0.2ms +[0.873s][info][gc,phases ] GC(9) Other: 0.1ms +[0.873s][info][gc,heap ] GC(9) Eden regions: 13->0(13) +[0.873s][info][gc,heap ] GC(9) Survivor regions: 1->1(2) +[0.873s][info][gc,heap ] GC(9) Old regions: 0->0 +[0.873s][info][gc,heap ] GC(9) Archive regions: 2->2 +[0.873s][info][gc,heap ] GC(9) Humongous regions: 0->0 +[0.873s][info][gc,metaspace ] GC(9) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.873s][info][gc ] GC(9) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.908ms +[0.873s][info][gc,cpu ] GC(9) User=0.01s Sys=0.00s Real=0.00s +[0.955s][info][gc,start ] GC(10) Pause Young (Normal) (G1 Evacuation Pause) +[0.955s][info][gc,task ] GC(10) Using 8 workers of 8 for evacuation +[0.956s][info][gc,phases ] GC(10) Pre Evacuate Collection Set: 0.0ms +[0.956s][info][gc,phases ] GC(10) Merge Heap Roots: 0.1ms +[0.956s][info][gc,phases ] GC(10) Evacuate Collection Set: 0.4ms +[0.956s][info][gc,phases ] GC(10) Post Evacuate Collection Set: 0.3ms +[0.956s][info][gc,phases ] GC(10) Other: 0.2ms +[0.956s][info][gc,heap ] GC(10) Eden regions: 13->0(13) +[0.956s][info][gc,heap ] GC(10) Survivor regions: 1->1(2) +[0.956s][info][gc,heap ] GC(10) Old regions: 0->0 +[0.956s][info][gc,heap ] GC(10) Archive regions: 2->2 +[0.956s][info][gc,heap ] GC(10) Humongous regions: 0->0 +[0.956s][info][gc,metaspace ] GC(10) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[0.956s][info][gc ] GC(10) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.970ms +[0.956s][info][gc,cpu ] GC(10) User=0.00s Sys=0.00s Real=0.00s +[1.038s][info][gc,start ] GC(11) Pause Young (Normal) (G1 Evacuation Pause) +[1.038s][info][gc,task ] GC(11) Using 8 workers of 8 for evacuation +[1.038s][info][gc,phases ] GC(11) Pre Evacuate Collection Set: 0.0ms +[1.038s][info][gc,phases ] GC(11) Merge Heap Roots: 0.1ms +[1.039s][info][gc,phases ] GC(11) Evacuate Collection Set: 0.4ms +[1.039s][info][gc,phases ] GC(11) Post Evacuate Collection Set: 0.3ms +[1.039s][info][gc,phases ] GC(11) Other: 0.1ms +[1.039s][info][gc,heap ] GC(11) Eden regions: 13->0(13) +[1.039s][info][gc,heap ] GC(11) Survivor regions: 1->1(2) +[1.039s][info][gc,heap ] GC(11) Old regions: 0->0 +[1.039s][info][gc,heap ] GC(11) Archive regions: 2->2 +[1.039s][info][gc,heap ] GC(11) Humongous regions: 0->0 +[1.039s][info][gc,metaspace ] GC(11) Metaspace: 1140K(5632K)->1140K(5632K) NonClass: 1087K(5120K)->1087K(5120K) Class: 52K(512K)->52K(512K) +[1.039s][info][gc ] GC(11) Pause Young (Normal) (G1 Evacuation Pause) 14M->1M(24M) 0.973ms +[1.039s][info][gc,cpu ] GC(11) User=0.00s Sys=0.01s Real=0.00s +[1.102s][info][gc,heap,exit ] Heap +[1.102s][info][gc,heap,exit ] garbage-first heap total 24576K, used 11522K [0x00000007fe800000, 0x0000000800000000) +[1.102s][info][gc,heap,exit ] region size 1024K, 12 young (12288K), 1 survivors (1024K) +[1.102s][info][gc,heap,exit ] Metaspace used 1145K, capacity 5316K, committed 5632K, reserved 1056768K +[1.102s][info][gc,heap,exit ] class space used 53K, capacity 429K, committed 512K, reserved 1048576K diff --git a/gc.log0 b/gc.log0 new file mode 100644 index 0000000..99c9b92 --- /dev/null +++ b/gc.log0 @@ -0,0 +1,86 @@ +[0.008s][info][gc,heap] Heap region size: 1M +[0.009s][info][gc,heap,coops] Heap address: 0x00000007fce00000, size: 50 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +[0.009s][info][gc ] Using G1 +[0.010s][info][gc,cds ] Mark closed archive regions in map: [0x00000007fff00000, 0x00000007fff7aff8] +[0.010s][info][gc,cds ] Mark open archive regions in map: [0x00000007ffe00000, 0x00000007ffe50ff8] +[0.024s][info][gc ] Periodic GC disabled +[0.191s][info][gc,start ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) +[0.192s][info][gc,task ] GC(0) Using 8 workers of 8 for evacuation +[0.192s][info][gc,phases ] GC(0) Pre Evacuate Collection Set: 0.0ms +[0.192s][info][gc,phases ] GC(0) Merge Heap Roots: 0.0ms +[0.192s][info][gc,phases ] GC(0) Evacuate Collection Set: 0.5ms +[0.192s][info][gc,phases ] GC(0) Post Evacuate Collection Set: 0.1ms +[0.192s][info][gc,phases ] GC(0) Other: 0.4ms +[0.192s][info][gc,heap ] GC(0) Eden regions: 23->0(28) +[0.192s][info][gc,heap ] GC(0) Survivor regions: 0->1(3) +[0.192s][info][gc,heap ] GC(0) Old regions: 0->0 +[0.192s][info][gc,heap ] GC(0) Archive regions: 2->2 +[0.192s][info][gc,heap ] GC(0) Humongous regions: 1->0 +[0.192s][info][gc,metaspace ] GC(0) Metaspace: 1141K(5632K)->1141K(5632K) NonClass: 1088K(5120K)->1088K(5120K) Class: 52K(512K)->52K(512K) +[0.192s][info][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 24M->1M(50M) 1.115ms +[0.192s][info][gc,cpu ] GC(0) User=0.00s Sys=0.00s Real=0.00s +[0.364s][info][gc,start ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) +[0.364s][info][gc,task ] GC(1) Using 8 workers of 8 for evacuation +[0.365s][info][gc,phases ] GC(1) Pre Evacuate Collection Set: 0.0ms +[0.365s][info][gc,phases ] GC(1) Merge Heap Roots: 0.0ms +[0.365s][info][gc,phases ] GC(1) Evacuate Collection Set: 0.4ms +[0.365s][info][gc,phases ] GC(1) Post Evacuate Collection Set: 0.1ms +[0.365s][info][gc,phases ] GC(1) Other: 0.1ms +[0.365s][info][gc,heap ] GC(1) Eden regions: 28->0(29) +[0.365s][info][gc,heap ] GC(1) Survivor regions: 1->1(4) +[0.365s][info][gc,heap ] GC(1) Old regions: 0->0 +[0.365s][info][gc,heap ] GC(1) Archive regions: 2->2 +[0.365s][info][gc,heap ] GC(1) Humongous regions: 0->0 +[0.365s][info][gc,metaspace ] GC(1) Metaspace: 1141K(5632K)->1141K(5632K) NonClass: 1088K(5120K)->1088K(5120K) Class: 52K(512K)->52K(512K) +[0.365s][info][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 29M->1M(50M) 0.817ms +[0.365s][info][gc,cpu ] GC(1) User=0.00s Sys=0.00s Real=0.00s +[0.549s][info][gc,start ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) +[0.549s][info][gc,task ] GC(2) Using 8 workers of 8 for evacuation +[0.550s][info][gc,phases ] GC(2) Pre Evacuate Collection Set: 0.0ms +[0.550s][info][gc,phases ] GC(2) Merge Heap Roots: 0.0ms +[0.550s][info][gc,phases ] GC(2) Evacuate Collection Set: 0.5ms +[0.550s][info][gc,phases ] GC(2) Post Evacuate Collection Set: 0.2ms +[0.550s][info][gc,phases ] GC(2) Other: 0.2ms +[0.550s][info][gc,heap ] GC(2) Eden regions: 29->0(29) +[0.550s][info][gc,heap ] GC(2) Survivor regions: 1->1(4) +[0.550s][info][gc,heap ] GC(2) Old regions: 0->0 +[0.550s][info][gc,heap ] GC(2) Archive regions: 2->2 +[0.550s][info][gc,heap ] GC(2) Humongous regions: 0->0 +[0.550s][info][gc,metaspace ] GC(2) Metaspace: 1141K(5632K)->1141K(5632K) NonClass: 1088K(5120K)->1088K(5120K) Class: 52K(512K)->52K(512K) +[0.550s][info][gc ] GC(2) Pause Young (Normal) (G1 Evacuation Pause) 30M->1M(50M) 0.985ms +[0.550s][info][gc,cpu ] GC(2) User=0.01s Sys=0.00s Real=0.00s +[0.720s][info][gc,start ] GC(3) Pause Young (Normal) (G1 Evacuation Pause) +[0.720s][info][gc,task ] GC(3) Using 8 workers of 8 for evacuation +[0.721s][info][gc,phases ] GC(3) Pre Evacuate Collection Set: 0.0ms +[0.721s][info][gc,phases ] GC(3) Merge Heap Roots: 0.0ms +[0.721s][info][gc,phases ] GC(3) Evacuate Collection Set: 0.4ms +[0.721s][info][gc,phases ] GC(3) Post Evacuate Collection Set: 0.2ms +[0.721s][info][gc,phases ] GC(3) Other: 0.1ms +[0.721s][info][gc,heap ] GC(3) Eden regions: 29->0(29) +[0.721s][info][gc,heap ] GC(3) Survivor regions: 1->1(4) +[0.721s][info][gc,heap ] GC(3) Old regions: 0->0 +[0.721s][info][gc,heap ] GC(3) Archive regions: 2->2 +[0.721s][info][gc,heap ] GC(3) Humongous regions: 0->0 +[0.721s][info][gc,metaspace ] GC(3) Metaspace: 1141K(5632K)->1141K(5632K) NonClass: 1088K(5120K)->1088K(5120K) Class: 52K(512K)->52K(512K) +[0.721s][info][gc ] GC(3) Pause Young (Normal) (G1 Evacuation Pause) 30M->1M(50M) 0.918ms +[0.721s][info][gc,cpu ] GC(3) User=0.00s Sys=0.00s Real=0.00s +[0.911s][info][gc,start ] GC(4) Pause Young (Normal) (G1 Evacuation Pause) +[0.911s][info][gc,task ] GC(4) Using 8 workers of 8 for evacuation +[0.912s][info][gc,phases ] GC(4) Pre Evacuate Collection Set: 0.0ms +[0.912s][info][gc,phases ] GC(4) Merge Heap Roots: 0.0ms +[0.912s][info][gc,phases ] GC(4) Evacuate Collection Set: 0.4ms +[0.912s][info][gc,phases ] GC(4) Post Evacuate Collection Set: 0.1ms +[0.912s][info][gc,phases ] GC(4) Other: 0.1ms +[0.912s][info][gc,heap ] GC(4) Eden regions: 29->0(29) +[0.912s][info][gc,heap ] GC(4) Survivor regions: 1->1(4) +[0.912s][info][gc,heap ] GC(4) Old regions: 0->0 +[0.912s][info][gc,heap ] GC(4) Archive regions: 2->2 +[0.912s][info][gc,heap ] GC(4) Humongous regions: 0->0 +[0.912s][info][gc,metaspace ] GC(4) Metaspace: 1141K(5632K)->1141K(5632K) NonClass: 1088K(5120K)->1088K(5120K) Class: 52K(512K)->52K(512K) +[0.912s][info][gc ] GC(4) Pause Young (Normal) (G1 Evacuation Pause) 30M->1M(50M) 0.768ms +[0.912s][info][gc,cpu ] GC(4) User=0.00s Sys=0.00s Real=0.00s +[1.043s][info][gc,heap,exit ] Heap +[1.043s][info][gc,heap,exit ] garbage-first heap total 51200K, used 26879K [0x00000007fce00000, 0x0000000800000000) +[1.043s][info][gc,heap,exit ] region size 1024K, 27 young (27648K), 1 survivors (1024K) +[1.043s][info][gc,heap,exit ] Metaspace used 1149K, capacity 5316K, committed 5632K, reserved 1056768K +[1.043s][info][gc,heap,exit ] class space used 53K, capacity 429K, committed 512K, reserved 1048576K diff --git a/src/main/kotlin/main.kt b/src/main/kotlin/main.kt index 8fb6584..10ec30d 100644 --- a/src/main/kotlin/main.kt +++ b/src/main/kotlin/main.kt @@ -1,17 +1,56 @@ +import java.io.File import java.nio.file.Paths import java.util.* -import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.atomic.AtomicReference import kotlin.concurrent.thread +import java.util.regex.Pattern private val CLASS_PATH = System.getProperty("java.class.path") private val JAVA_PATH = Paths.get(System.getProperty("java.home")).resolve("bin").resolve("java").toString() -private val JVM_OPTIONS = listOf("-Xmx5m", "-XX:+PrintGCDetails", "-Xloggc:/Users/victoria/gc.log") +private val JVM_OPTIONS = listOf(/*"-Xmx4097k", */"-XX:+PrintGCDetails", "-Xloggc:/Users/victoria/gc.log") +private val PATTERN = ".*GC\\(([^()]*)\\)" -var value: AtomicInteger = AtomicInteger(0) +private val MAX = 52428800 // 50mb + +var value: AtomicReference = AtomicReference(0) var random = Random() +val pattern = Pattern.compile(PATTERN) fun main(args: Array) { - val successful = runProcess(Process::class.java.name, JVM_OPTIONS, args) + // Warmup + repeat(1000) { + run(args, MAX) + } + +// repeat(1) { +// run(listOf("printTime").toTypedArray(), MAX) +// } + + var l = 0 + var r = MAX + + while (r - l > 1) { + val mid = (l + r) / 2 + + var error = false + try { + run(args, mid) + } catch (e : Exception) { + error = true + } + + if (getGcNum() > 10 || error) { + l = mid + } else { + r = mid + } + } + + println(l) +} + +fun run(args: Array, memorySize: Int) { + val successful = runProcess(Process::class.java.name, JVM_OPTIONS + "-Xmx$memorySize", args) if (!successful) { println("The benchmark failed with error, see the output.") @@ -42,13 +81,26 @@ private class Process { val threads = (0 until 10).map { threadId -> thread { repeat(1000000) { - val newVal = random.nextInt(1000) + val newVal = random.nextInt(10000000) value.set(newVal) } } } threads.forEach { it.join() } - print(System.currentTimeMillis() - t0) + if (args.isNotEmpty() && args[0] == "printTime") { + println(System.currentTimeMillis() - t0) + } } } +} + +fun getGcNum():Int { + val text = File("/Users/victoria/gc.log").readText(Charsets.UTF_8) + val m = pattern.matcher(text) + var last = 0 + while (m.find()) { + last = m.group(1).toInt() + } + + return last } \ No newline at end of file