SlideShare a Scribd company logo
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
The Z Garbage Collector
Scalable Low-Latency GC in JDK 11
David Buck
JVM Engineer
Java Platform Group, Oracle
March 28, 2019
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for
information purposes only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon
in making purchasing decisions. The development, release, and timing of any features or
functionality described for Oracle’s products remains at the sole discretion of Oracle.
2
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
• JVM Sustaining Engineer
• OpenJDK Update Project
Maintainer
• JavaOne Rock Star
• Co-author of Oracle WebLogic
Server 11g 構築・運用ガイド
• @DavidBuckJP
• https://blogs.oracle.com/buck/
Who am I? バック デイビッド(左)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Agenda
ZGC って何?
実装
パフォーマンス
ZGC の使い方
ロードマップ
1
2
3
4
5
4
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC って何?
5
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
まずは Z の意味。。。
6
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS
7
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS
Zettabyte File System
8
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte
9
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte?
10
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte
== 1000^7 bytes
11
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte
== 1000^7 bytes
== 1000 Exabytes
12
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte
== 1000^7 bytes
== 1000 Exabytes
== 1,000,000 Petabytes
13
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte
== 1000^7 bytes
== 1000 Exabytes
== 1,000,000 Petabytes
== 1,000,000,000 Terabytes
14
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Zettabyte != Zebibyte
1000^7 != 1024^7
15
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS
最大 FS サイズ
256,000,000,000 yobibytes
最大ファイルサイズ
16 exbibytes
16
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS ZGC
17
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS ZGC
18
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS ZGC
19
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZFS ZGC
???
20
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC
21
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
JDK 11 以降の新しい GC
(実験的 Linux/x86_64 のみ) 22
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
A Scalable Low-Latency Garbage Collector
23
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
目的
複数 TB のヒープ 以下の停止時間
楽なチューニング 以下のオーバーヘッド
10msTB
15%
24
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC のイロハ
Concurrent
Tracing
Compacting
Single Generation
25
Region 式
NUMA 対応
Load barriers
Colored pointers
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC の特徴
ヒープと生存データのサイズが停止時間に
影響を及ぼさない
26
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC の特徴
ルート参照の数が停止時間に
影響を及ぼす
(Java スレッドの数)
27
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
コンカレント?
Serial Parallel CMS G1 ZGC
Marking
Relocation/Compaction
Reference Processing
Relocation Set Selection
StringTable Cleaning
JNI WeakRef Cleaning
JNI GlobalRefs Scanning
Class Unloading
Thread Stack Scanning
28
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
コンカレント?
Serial Parallel CMS G1 ZGC
Marking - -
Relocation/Compaction - -
Reference Processing - -
Relocation Set Selection - -
StringTable Cleaning - -
JNI WeakRef Cleaning - -
JNI GlobalRefs Scanning - -
Class Unloading - -
Thread Stack Scanning - -
29
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
コンカレント?
Serial Parallel CMS G1 ZGC
Marking - - ✔* ✔*
Relocation/Compaction - - - -
Reference Processing - - - -
Relocation Set Selection - - - -
StringTable Cleaning - - - -
JNI WeakRef Cleaning - - - -
JNI GlobalRefs Scanning - - - -
Class Unloading - - - -
Thread Stack Scanning - - - -
30
**) Old Gen Only
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
コンカレント?
Serial Parallel CMS G1 ZGC
Marking - - ✔* ✔* ✔
Relocation/Compaction - - - - ✔
Reference Processing - - - - ✔
Relocation Set Selection - - - - ✔
StringTable Cleaning - - - - ✔
JNI WeakRef Cleaning - - - - ✔
JNI GlobalRefs Scanning - - - - ✔**
Class Unloading - - - - ✔**
Thread Stack Scanning - - - - -
31
**) Old Gen Only
**) JDK 12 以降
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
実装
32
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Heap Address Space
ヒープのアドレス空間
Maps into
Max heap size (Xmx)
Large address space reservation
Heap Memory/RegionsHeap Memory/Regions
33
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
34
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Scan thread stacks
35
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Walk object graph
36
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Synchronization point
37
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Reference processing
Weak root cleaning
Relocation set selection
38
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Scan thread stacks
39
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
Compact heap
40
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
41
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
42
< 10 ms < 10 ms < 10 ms
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Colored Pointers (タグを含むポインター)
• ZGC の設計の基盤となる概念の一つ
• 利用されていないビットにメタデータを格納する
– 32-bit の JVM はサポート対象外
– CompressedOops もサポート対象外
43
Object のアドレス (42 bits, 4TB アドレス空間)
64-bit Object ポインター
未使用 (18 ビット)
Colors
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Heap Multi-Mapping on Linux/x86_64
Heap Remapped View
Heap Marked1 View
Heap Marked0 View
0x00007FFFFFFFFFFF (128TB)
0x0000140000000000 (20TB)
0x0000100000000000 (16TB)
0x00000C0000000000 (12TB)
0x0000080000000000 (8TB)
0x0000040000000000 (4TB)
0x0000000000000000
Heap Memory
Address Space
Same memory mapped in 3
different locations
Colored pointer (Remapped)
0x0000100012345678
Colorless pointer
0x0000000012345678
Colored pointer (Marked1)
0x0000080012345678
Colored pointer (Marked0)
0x0000040012345678
44
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
• 特定の処理にコードを組み込む
– Object の参照をヒープから読み込む場合
• 読み込んだポインタの色(color)が「正しい」かどうかを確認
– 正しくない場合、直す
45
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
String n = person.name; // Loading an object reference from heap
46
String name;
int age;
double height;
...
Person
String
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
String n = person.name; // Loading an object reference from heap
<load barrier needed here>
47
String name;
int age;
double height;
...
Person
String
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
String n = person.name; // Loading an object reference from heap
<load barrier needed here>
String p = n; // No barrier, not a load from heap
n.isEmpty(); // No barrier, not a load from heap
int age = person.age; // No barrier, not an object reference
48
String name;
int age;
double height;
...
Person
String
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
String n = person.name; // Loading an object reference from heap
<load barrier needed here>
49
String name;
int age;
double height;
...
Person
String
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
String n = person.name; // Loading an object reference from heap
if (n & bad_bit_mask) {
slow_path(register_for(n), address_of(person.name));
}
50
String name;
int age;
double height;
...
Person
String
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
mov 0x10(%rax), %rbx // String n = person.name;
test %rbx, (0x16)%r15 // Bad color?
jnz slow_path // Yes -> Enter slow path and
// mark/relocate/remap, adjust
// 0x10(%rax) and %rbx
51
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Load Barrier
mov 0x10(%rax), %rbx // String n = person.name;
test %rbx, (0x16)%r15 // Bad color?
jnz slow_path // Yes -> Enter slow path and
// mark/relocate/remap, adjust
// 0x10(%rax) and %rbx
~4% 実行オーバーヘッド SPECjbb®2015
52
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
パフォーマンス
53
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Mode: Composite
Heap Size: 128G
OS: Oracle Linux 7.4
HW: Intel Xeon E5-2690 2.9GHz
2 sockets, 16 cores (32 hw-threads)
SPECjbb®2015 is a registered trademark of the Standard Performance
Evaluation Corporation (spec.org). The actual results are not represented
as compliant because the SUT may not meet SPEC's requirements for
general availability.
SPECjbb®2015 – Score
54
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
ZGC Parallel G1
(Higher is better)
max-JOPS (Throughput) critical-JOPS (Throughput with latency requirements)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Mode: Composite
Heap Size: 128G
OS: Oracle Linux 7.4
HW: Intel Xeon E5-2690 2.9GHz
2 sockets, 16 cores (32 hw-threads)
SPECjbb®2015 is a registered trademark of the Standard Performance
Evaluation Corporation (spec.org). The actual results are not represented
as compliant because the SUT may not meet SPEC's requirements for
general availability.
SPECjbb®2015 – Score
55
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
ZGC Parallel G1
(Higher is better)
max-JOPS (Throughput) critical-JOPS (Throughput with latency requirements)
50%
29%
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
0
100
200
300
400
500
600
ZGC Parallel G1
GCPauseTimes(ms)
Linear scale
(Lower is better)
Average 95th percentile 99th percentile 99.9th percentile Max
SPECjbb®2015 – Pause Times
56
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
1
10
100
1000
ZGC Parallel G1
GCPauseTimes(ms)
Logarithmic scale
(Lower is better)
Average 95th percentile 99th percentile 99.9th percentile Max
SPECjbb®2015 – Pause Times
57
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
1
10
100
1000
ZGC Parallel G1
GCPauseTimes(ms)
Logarithmic scale
(Lower is better)
Average 95th percentile 99th percentile 99.9th percentile Max
SPECjbb®2015 – Pause Times
58
1.96
1.10
156
306
211
544
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
1
10
100
1000
ZGC Parallel G1
GCPauseTimes(ms)
Logarithmic scale
(Lower is better)
Average 95th percentile 99th percentile 99.9th percentile Max
SPECjbb®2015 – Pause Times
59
1.96
1.10
156
306
211
544
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC の使い方
60
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
有効にする
-XX:+UseZGC
61
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
有効にする
-XX:+UnlockExperimentalVMOptions
-XX:+UseZGC
62
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
チューニング
63
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
チューニング
-Xmx<size>
最大のヒープサイズ
64
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
チューニング
-Xmx<size>
-XX:ConcGCThreads=<number>
(必要に応じて)GC のワーカースレッド
65
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
チューニング
-Xmx<size>
-XX:ConcGCThreads=<number>
これだけ?
66
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ログ出力
-Xlog:gc (基本)
-Xlog:gc* (詳細)
67
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Proactive) 13426M(10%)->2492M(2%)
Garbage Collection (Allocation Rate) 87676M(67%)->19578M(15%)
Garbage Collection (Allocation Rate) 55302M(42%)->17646M(13%)
Garbage Collection (Allocation Rate) 61794M(47%)->26794M(20%)
Garbage Collection (Allocation Rate) 60856M(46%)->31926M(24%)
Garbage Collection (Allocation Rate) 52744M(40%)->38050M(29%)
Garbage Collection (Allocation Rate) 42542M(32%)->32204M(25%)
Garbage Collection (Allocation Rate) 49974M(38%)->8534M(7%)
Garbage Collection (System.gc()) 8534M(7%)->282M(0%)
Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%)
Garbage Collection (Allocation Rate) 42478M(32%)->23812M(18%)
Garbage Collection (Allocation Rate) 56714M(43%)->29090M(22%)
Garbage Collection (Allocation Rate) 62802M(48%)->28648M(22%)
Garbage Collection (Allocation Rate) 59748M(46%)->23770M(18%)
Garbage Collection (Allocation Rate) 74946M(57%)->23284M(18%)
Garbage Collection (System.gc()) 44902M(34%)->422M(0%)
Garbage Collection (Allocation Rate) 94510M(72%)->20456M(16%)
Garbage Collection (Allocation Rate) 59694M(46%)->25834M(20%)
Garbage Collection (Allocation Rate) 63494M(48%)->29128M(22%)
Garbage Collection (Allocation Rate) 59034M(45%)->27094M(21%)
Garbage Collection (Allocation Rate) 66110M(50%)->25278M(19%)
Garbage Collection (Allocation Rate) 73410M(56%)->27968M(21%)
Garbage Collection (Allocation Rate) 70010M(53%)->32236M(25%)
Garbage Collection (Allocation Rate) 64444M(49%)->27612M(21%)
Garbage Collection (Allocation Rate) 64484M(49%)->29910M(23%)
Garbage Collection (Allocation Rate) 64128M(49%)->33184M(25%)
Garbage Collection (Allocation Rate) 59148M(45%)->27800M(21%)
Garbage Collection (Allocation Rate) 63104M(48%)->27976M(21%)
Garbage Collection (Allocation Rate) 64418M(49%)->34390M(26%)
Garbage Collection (Allocation Rate) 52284M(40%)->30654M(23%)
Garbage Collection (Allocation Rate) 58746M(45%)->32028M(24%)
Garbage Collection (Allocation Rate) 59468M(45%)->32804M(25%)
Garbage Collection (Allocation Rate) 53342M(41%)->18436M(14%)
68
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Proactive) 13426M(10%)->2492M(2%)
Garbage Collection (Allocation Rate) 87676M(67%)->19578M(15%)
Garbage Collection (Allocation Rate) 55302M(42%)->17646M(13%)
Garbage Collection (Allocation Rate) 61794M(47%)->26794M(20%)
Garbage Collection (Allocation Rate) 60856M(46%)->31926M(24%)
Garbage Collection (Allocation Rate) 52744M(40%)->38050M(29%)
Garbage Collection (Allocation Rate) 42542M(32%)->32204M(25%)
Garbage Collection (Allocation Rate) 49974M(38%)->8534M(7%)
Garbage Collection (System.gc()) 8534M(7%)->282M(0%)
Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%)
Garbage Collection (Allocation Rate) 42478M(32%)->23812M(18%)
Garbage Collection (Allocation Rate) 56714M(43%)->29090M(22%)
Garbage Collection (Allocation Rate) 62802M(48%)->28648M(22%)
Garbage Collection (Allocation Rate) 59748M(46%)->23770M(18%)
Garbage Collection (Allocation Rate) 74946M(57%)->23284M(18%)
Garbage Collection (System.gc()) 44902M(34%)->422M(0%)
Garbage Collection (Allocation Rate) 94510M(72%)->20456M(16%)
Garbage Collection (Allocation Rate) 59694M(46%)->25834M(20%)
Garbage Collection (Allocation Rate) 63494M(48%)->29128M(22%)
Garbage Collection (Allocation Rate) 59034M(45%)->27094M(21%)
Garbage Collection (Allocation Rate) 66110M(50%)->25278M(19%)
Garbage Collection (Allocation Rate) 73410M(56%)->27968M(21%)
Garbage Collection (Allocation Rate) 70010M(53%)->32236M(25%)
Garbage Collection (Allocation Rate) 64444M(49%)->27612M(21%)
Garbage Collection (Allocation Rate) 64484M(49%)->29910M(23%)
Garbage Collection (Allocation Rate) 64128M(49%)->33184M(25%)
Garbage Collection (Allocation Rate) 59148M(45%)->27800M(21%)
Garbage Collection (Allocation Rate) 63104M(48%)->27976M(21%)
Garbage Collection (Allocation Rate) 64418M(49%)->34390M(26%)
Garbage Collection (Allocation Rate) 52284M(40%)->30654M(23%)
Garbage Collection (Allocation Rate) 58746M(45%)->32028M(24%)
Garbage Collection (Allocation Rate) 59468M(45%)->32804M(25%)
Garbage Collection (Allocation Rate) 53342M(41%)->18436M(14%)
69
Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Allocation Rate)
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Load: 15.77/10.68/9.93
MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8%
Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Relocation: Successful, 867M relocated
NMethods: 3209 registered, 1559 unregistered
Soft: 466881 encountered, 0 discovered, 0 enqueued
Weak: 5421 encountered, 3526 discovered, 1742 enqueued
Final: 55 encountered, 6 discovered, 0 enqueued
Phantom: 74 encountered, 59 discovered, 0 enqueued
Mark Start Mark End Relocate Start Relocate End High Low
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%) - -
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - -
Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - -
Reclaimed: - - 18270M (14%) 121496M (93%) - -
Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%)
70
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Allocation Rate)
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Load: 15.77/10.68/9.93
MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8%
Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Relocation: Successful, 867M relocated
NMethods: 3209 registered, 1559 unregistered
Soft: 466881 encountered, 0 discovered, 0 enqueued
Weak: 5421 encountered, 3526 discovered, 1742 enqueued
Final: 55 encountered, 6 discovered, 0 enqueued
Phantom: 74 encountered, 59 discovered, 0 enqueued
Mark Start Mark End Relocate Start Relocate End High Low
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%) - -
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - -
Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - -
Reclaimed: - - 18270M (14%) 121496M (93%) - -
Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%)
71
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Allocation Rate)
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Load: 15.77/10.68/9.93
MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8%
Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Relocation: Successful, 867M relocated
NMethods: 3209 registered, 1559 unregistered
Soft: 466881 encountered, 0 discovered, 0 enqueued
Weak: 5421 encountered, 3526 discovered, 1742 enqueued
Final: 55 encountered, 6 discovered, 0 enqueued
Phantom: 74 encountered, 59 discovered, 0 enqueued
Mark Start Mark End Relocate Start Relocate End High Low
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%) - -
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - -
Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - -
Reclaimed: - - 18270M (14%) 121496M (93%) - -
Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%)
72
Mark Start Mark End Relocate Start Relocate End
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%)
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%)
Garbage: - 121623M (93%) 103353M (79%) 127M (0%)
Reclaimed: - - 18270M (14%) 121496M (93%)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Phases
Concurrent
Mark/Remap
Pause Mark End Pause Relocate StartPause Mark Start
Concurrent
Prepare for Reloc.
Concurrent
Relocate
GC Cycle
73
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Allocation Rate)
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Load: 15.77/10.68/9.93
MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8%
Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Relocation: Successful, 867M relocated
NMethods: 3209 registered, 1559 unregistered
Soft: 466881 encountered, 0 discovered, 0 enqueued
Weak: 5421 encountered, 3526 discovered, 1742 enqueued
Final: 55 encountered, 6 discovered, 0 enqueued
Phantom: 74 encountered, 59 discovered, 0 enqueued
Mark Start Mark End Relocate Start Relocate End High Low
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%) - -
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - -
Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - -
Reclaimed: - - 18270M (14%) 121496M (93%) - -
Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%)
74
Mark Start Mark End Relocate Start Relocate End
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%)
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%)
Garbage: - 121623M (93%) 103353M (79%) 127M (0%)
Reclaimed: - - 18270M (14%) 121496M (93%)
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
Garbage Collection (Allocation Rate)
Pause Mark Start 0.949ms
Concurrent Mark 1151.425ms
Pause Mark End 0.882ms
Concurrent Process Non-Strong References 0.367ms
Concurrent Reset Relocation Set 18.090ms
Concurrent Destroy Detached Pages 0.002ms
Concurrent Select Relocation Set 12.295ms
Concurrent Prepare Relocation Set 70.922ms
Pause Relocate Start 1.419ms
Concurrent Relocate 645.941ms
Load: 15.77/10.68/9.93
MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8%
Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Relocation: Successful, 867M relocated
NMethods: 3209 registered, 1559 unregistered
Soft: 466881 encountered, 0 discovered, 0 enqueued
Weak: 5421 encountered, 3526 discovered, 1742 enqueued
Final: 55 encountered, 6 discovered, 0 enqueued
Phantom: 74 encountered, 59 discovered, 0 enqueued
Mark Start Mark End Relocate Start Relocate End High Low
Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%)
Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%)
Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%)
Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%)
Live: - 1722M (1%) 1722M (1%) 1722M (1%) - -
Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - -
Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - -
Reclaimed: - - 18270M (14%) 121496M (93%) - -
Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%)
75
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
GC Statistics (統計)
=== Garbage Collection Statistics =======================================================================================================================
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms
Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s
Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s
Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s
Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s
Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB
Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB
Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB
Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB
Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s
Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s
Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s
Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s
Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s
Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s
Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s
Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms
Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms
Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms
Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms
Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms
Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms
Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms
Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms
Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms
Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms
Subphase: Concurrent Mark 1151.055 / 1151.287 1162.724 / 1452.499 1059.510 / 3028.035 1059.510 / 3028.035 ms
Subphase: Concurrent Mark Idle 1.058 / 1.060 1.088 / 2.320 2.727 / 22.115 2.727 / 22.115 ms
Subphase: Concurrent Mark Try Flush 0.779 / 1.862 0.603 / 5.829 8.556 / 50.035 8.556 / 50.035 ms
Subphase: Concurrent Mark Try Terminate 0.849 / 1.062 0.940 / 2.321 2.766 / 45.114 2.766 / 45.114 ms
76
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
=== Garbage Collection Statistics =======================================================================================================================
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms
Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s
Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s
Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s
Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s
Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB
Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB
Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB
Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB
Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s
Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s
Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s
Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s
Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s
Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s
Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s
Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms
Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms
Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms
Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms
Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms
Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms
Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms
Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms
Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms
Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms
...
77
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
=== Garbage Collection Statistics =======================================================================================================================
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms
Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s
Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s
Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s
Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s
Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB
Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB
Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB
Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB
Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s
Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s
Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s
Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s
Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s
Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s
Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s
Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms
Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms
Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms
Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms
Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms
Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms
Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms
Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms
Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms
Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms
...
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s
78
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
=== Garbage Collection Statistics =======================================================================================================================
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms
Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s
Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s
Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s
Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s
Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB
Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB
Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB
Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB
Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s
Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s
Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s
Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s
Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s
Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s
Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s
Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s
Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms
Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms
Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms
Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms
Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms
Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms
Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms
Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms
Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms
Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms
Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms
...
Last 10s Last 10m Last 10h Total
Avg / Max Avg / Max Avg / Max Avg / Max
Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms
Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms
Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms
79
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
80
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
81
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
-XX:+UnlockExperimentalVMOptions
82
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
• 長期
– 世代別
– 1ミリ秒以下の停止時間
– 他のプラットフォームのサポート
– Graal JIT の対応
83
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
• 長期
– 世代別
– 1ミリ秒以下の停止時間
– 他のプラットフォームのサポート
– Graal JIT の対応
世代別
• より速いアロケーション速度
• ヒープオーバーヘッドを抑える
• CPU 使用量を減らす
84
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
• 長期
– 世代別
– 1ミリ秒以下の停止時間
– 他のプラットフォームのサポート
– Graal JIT の対応
1ミリ秒以下の停止時間
• 出来るはず
• ルート参照の数を減らす
• Time-to-Safepoint、など
85
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
• 長期
– 世代別
– 1ミリ秒以下の停止時間
– 他のプラットフォームのサポート
– Graal JIT の対応
他のプラットフォーム
• macOS?
• Windows?
• Aarch64?
86
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ロードマップ
• 短期
– 正式サポート
• 長期
– 世代別
– 1ミリ秒以下の停止時間
– 他のプラットフォームのサポート
– Graal JIT の対応
87
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
是非参加してください!
88
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC プロジェクト
zgc-dev@openjdk.java.net
http://wiki.openjdk.java.net/display/zgc/Main
Follow, Participate, Give Feedback
89
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ZGC Project
http://hg.openjdk.java.net/jdk/jdk
http://hg.openjdk.java.net/zgc/zgc
ソースコード
90
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
ありがとうございます!
91
Copyright © 2018, Oracle and/or its affiliates. All rights reserved. |
質問?
92
Z Garbage Collector

More Related Content

What's hot

ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
ota42y
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
Akihiro Suda
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB
Tsunenaga Hanyuda
 
CPUから見たG1GC
CPUから見たG1GCCPUから見たG1GC
CPUから見たG1GC
Kenji Kazumura
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
Akinori Abe
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】
kouzirou tenkubashi
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
Daisuke Morishita
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
Yuji Kubota
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
Yuta Matsumura
 

What's hot (20)

ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB3.Java EE7 徹底入門 CDI&EJB
3.Java EE7 徹底入門 CDI&EJB
 
CPUから見たG1GC
CPUから見たG1GCCPUから見たG1GC
CPUから見たG1GC
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】みんな大好きJava gc入門 【前編】
みんな大好きJava gc入門 【前編】
 
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 

Similar to Z Garbage Collector

“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
C4Media
 
Using The Mysql Binary Log As A Change Stream
Using The Mysql Binary Log As A Change StreamUsing The Mysql Binary Log As A Change Stream
Using The Mysql Binary Log As A Change Stream
Luís Soares
 
Backup and Recovery in MySQL Cluster
Backup and Recovery in MySQL ClusterBackup and Recovery in MySQL Cluster
Backup and Recovery in MySQL Cluster
priyanka_sangam
 
Replication Whats New in Mysql 8
Replication Whats New in Mysql 8Replication Whats New in Mysql 8
Replication Whats New in Mysql 8
Luís Soares
 
Tuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceTuning Flink For Robustness And Performance
Tuning Flink For Robustness And Performance
Stefan Richter
 
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward
 
Hyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous DatabaseHyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous Database
Connor McDonald
 
Latin America Tour 2019 - 18c and 19c featues
Latin America Tour 2019   - 18c and 19c featuesLatin America Tour 2019   - 18c and 19c featues
Latin America Tour 2019 - 18c and 19c featues
Connor McDonald
 
18c and 19c features for DBAs
18c and 19c features for DBAs18c and 19c features for DBAs
18c and 19c features for DBAs
Connor McDonald
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
Marcus Hirt
 
Hyderabad Mar 2019 - Database 18c / 19c
Hyderabad Mar 2019 - Database 18c / 19cHyderabad Mar 2019 - Database 18c / 19c
Hyderabad Mar 2019 - Database 18c / 19c
Connor McDonald
 
Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c features
Connor McDonald
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
scalaconfjp
 
MySQL Replication
MySQL ReplicationMySQL Replication
MySQL Replication
Mark Swarbrick
 
GraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster EverywhereGraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster Everywhere
J On The Beach
 
Java and Serverless - A Match Made In Heaven, Part 2
Java and Serverless - A Match Made In Heaven, Part 2Java and Serverless - A Match Made In Heaven, Part 2
Java and Serverless - A Match Made In Heaven, Part 2
Curity
 
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
David Buck
 
MySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and ScalabilityMySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and Scalability
Shivji Kumar Jha
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on Exadata
Anil Nair
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB Clusters
Miguel Araújo
 

Similar to Z Garbage Collector (20)

“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
Using The Mysql Binary Log As A Change Stream
Using The Mysql Binary Log As A Change StreamUsing The Mysql Binary Log As A Change Stream
Using The Mysql Binary Log As A Change Stream
 
Backup and Recovery in MySQL Cluster
Backup and Recovery in MySQL ClusterBackup and Recovery in MySQL Cluster
Backup and Recovery in MySQL Cluster
 
Replication Whats New in Mysql 8
Replication Whats New in Mysql 8Replication Whats New in Mysql 8
Replication Whats New in Mysql 8
 
Tuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceTuning Flink For Robustness And Performance
Tuning Flink For Robustness And Performance
 
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
Flink Forward Berlin 2018: Stefan Richter - "Tuning Flink for Robustness and ...
 
Hyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous DatabaseHyderabad Mar 2019 - Autonomous Database
Hyderabad Mar 2019 - Autonomous Database
 
Latin America Tour 2019 - 18c and 19c featues
Latin America Tour 2019   - 18c and 19c featuesLatin America Tour 2019   - 18c and 19c featues
Latin America Tour 2019 - 18c and 19c featues
 
18c and 19c features for DBAs
18c and 19c features for DBAs18c and 19c features for DBAs
18c and 19c features for DBAs
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
 
Hyderabad Mar 2019 - Database 18c / 19c
Hyderabad Mar 2019 - Database 18c / 19cHyderabad Mar 2019 - Database 18c / 19c
Hyderabad Mar 2019 - Database 18c / 19c
 
Perth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c featuresPerth APAC Groundbreakers tour - 18c features
Perth APAC Groundbreakers tour - 18c features
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
 
MySQL Replication
MySQL ReplicationMySQL Replication
MySQL Replication
 
GraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster EverywhereGraalVM: Run Programs Faster Everywhere
GraalVM: Run Programs Faster Everywhere
 
Java and Serverless - A Match Made In Heaven, Part 2
Java and Serverless - A Match Made In Heaven, Part 2Java and Serverless - A Match Made In Heaven, Part 2
Java and Serverless - A Match Made In Heaven, Part 2
 
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
 
MySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and ScalabilityMySQL Developer Day conference: MySQL Replication and Scalability
MySQL Developer Day conference: MySQL Replication and Scalability
 
Oracle RAC features on Exadata
Oracle RAC features on ExadataOracle RAC features on Exadata
Oracle RAC features on Exadata
 
MySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB ClustersMySQL 8 High Availability with InnoDB Clusters
MySQL 8 High Availability with InnoDB Clusters
 

More from David Buck

JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
David Buck
 
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
David Buck
 
Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]
David Buck
 
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
David Buck
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]
David Buck
 
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
David Buck
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
David Buck
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
David Buck
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
David Buck
 
Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018
David Buck
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
David Buck
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
David Buck
 
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
David Buck
 
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
David Buck
 
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
David Buck
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
David Buck
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
 
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
David Buck
 
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
David Buck
 

More from David Buck (20)

JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
 
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
 
Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]Java Bytecode Crash Course [Code One 2019]
Java Bytecode Crash Course [Code One 2019]
 
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
 
invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]invokedynamic for Mere Mortals [Code One 2019]
invokedynamic for Mere Mortals [Code One 2019]
 
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
 
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
 
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
 
Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018Var handles jjug_ccc_spring_2018
Var handles jjug_ccc_spring_2018
 
JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
 
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
 
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
 
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
 
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
 
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
 

Recently uploaded

2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 

Recently uploaded (20)

2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 

Z Garbage Collector

  • 1. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | The Z Garbage Collector Scalable Low-Latency GC in JDK 11 David Buck JVM Engineer Java Platform Group, Oracle March 28, 2019
  • 2. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 3. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | • JVM Sustaining Engineer • OpenJDK Update Project Maintainer • JavaOne Rock Star • Co-author of Oracle WebLogic Server 11g 構築・運用ガイド • @DavidBuckJP • https://blogs.oracle.com/buck/ Who am I? バック デイビッド(左)
  • 4. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Agenda ZGC って何? 実装 パフォーマンス ZGC の使い方 ロードマップ 1 2 3 4 5 4
  • 5. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC って何? 5
  • 6. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | まずは Z の意味。。。 6
  • 7. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS 7
  • 8. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS Zettabyte File System 8
  • 9. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte 9
  • 10. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte? 10
  • 11. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte == 1000^7 bytes 11
  • 12. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte == 1000^7 bytes == 1000 Exabytes 12
  • 13. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte == 1000^7 bytes == 1000 Exabytes == 1,000,000 Petabytes 13
  • 14. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte == 1000^7 bytes == 1000 Exabytes == 1,000,000 Petabytes == 1,000,000,000 Terabytes 14
  • 15. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Zettabyte != Zebibyte 1000^7 != 1024^7 15
  • 16. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS 最大 FS サイズ 256,000,000,000 yobibytes 最大ファイルサイズ 16 exbibytes 16
  • 17. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS ZGC 17
  • 18. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS ZGC 18
  • 19. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS ZGC 19
  • 20. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZFS ZGC ??? 20
  • 21. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC 21
  • 22. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | JDK 11 以降の新しい GC (実験的 Linux/x86_64 のみ) 22
  • 23. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | A Scalable Low-Latency Garbage Collector 23
  • 24. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 目的 複数 TB のヒープ 以下の停止時間 楽なチューニング 以下のオーバーヘッド 10msTB 15% 24
  • 25. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC のイロハ Concurrent Tracing Compacting Single Generation 25 Region 式 NUMA 対応 Load barriers Colored pointers
  • 26. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC の特徴 ヒープと生存データのサイズが停止時間に 影響を及ぼさない 26
  • 27. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC の特徴 ルート参照の数が停止時間に 影響を及ぼす (Java スレッドの数) 27
  • 28. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | コンカレント? Serial Parallel CMS G1 ZGC Marking Relocation/Compaction Reference Processing Relocation Set Selection StringTable Cleaning JNI WeakRef Cleaning JNI GlobalRefs Scanning Class Unloading Thread Stack Scanning 28
  • 29. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | コンカレント? Serial Parallel CMS G1 ZGC Marking - - Relocation/Compaction - - Reference Processing - - Relocation Set Selection - - StringTable Cleaning - - JNI WeakRef Cleaning - - JNI GlobalRefs Scanning - - Class Unloading - - Thread Stack Scanning - - 29
  • 30. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | コンカレント? Serial Parallel CMS G1 ZGC Marking - - ✔* ✔* Relocation/Compaction - - - - Reference Processing - - - - Relocation Set Selection - - - - StringTable Cleaning - - - - JNI WeakRef Cleaning - - - - JNI GlobalRefs Scanning - - - - Class Unloading - - - - Thread Stack Scanning - - - - 30 **) Old Gen Only
  • 31. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | コンカレント? Serial Parallel CMS G1 ZGC Marking - - ✔* ✔* ✔ Relocation/Compaction - - - - ✔ Reference Processing - - - - ✔ Relocation Set Selection - - - - ✔ StringTable Cleaning - - - - ✔ JNI WeakRef Cleaning - - - - ✔ JNI GlobalRefs Scanning - - - - ✔** Class Unloading - - - - ✔** Thread Stack Scanning - - - - - 31 **) Old Gen Only **) JDK 12 以降
  • 32. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 実装 32
  • 33. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Heap Address Space ヒープのアドレス空間 Maps into Max heap size (Xmx) Large address space reservation Heap Memory/RegionsHeap Memory/Regions 33
  • 34. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle 34
  • 35. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Scan thread stacks 35
  • 36. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Walk object graph 36
  • 37. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Synchronization point 37
  • 38. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Reference processing Weak root cleaning Relocation set selection 38
  • 39. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Scan thread stacks 39
  • 40. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle Compact heap 40
  • 41. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle 41
  • 42. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle 42 < 10 ms < 10 ms < 10 ms
  • 43. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Colored Pointers (タグを含むポインター) • ZGC の設計の基盤となる概念の一つ • 利用されていないビットにメタデータを格納する – 32-bit の JVM はサポート対象外 – CompressedOops もサポート対象外 43 Object のアドレス (42 bits, 4TB アドレス空間) 64-bit Object ポインター 未使用 (18 ビット) Colors
  • 44. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Heap Multi-Mapping on Linux/x86_64 Heap Remapped View Heap Marked1 View Heap Marked0 View 0x00007FFFFFFFFFFF (128TB) 0x0000140000000000 (20TB) 0x0000100000000000 (16TB) 0x00000C0000000000 (12TB) 0x0000080000000000 (8TB) 0x0000040000000000 (4TB) 0x0000000000000000 Heap Memory Address Space Same memory mapped in 3 different locations Colored pointer (Remapped) 0x0000100012345678 Colorless pointer 0x0000000012345678 Colored pointer (Marked1) 0x0000080012345678 Colored pointer (Marked0) 0x0000040012345678 44
  • 45. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier • 特定の処理にコードを組み込む – Object の参照をヒープから読み込む場合 • 読み込んだポインタの色(color)が「正しい」かどうかを確認 – 正しくない場合、直す 45
  • 46. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier String n = person.name; // Loading an object reference from heap 46 String name; int age; double height; ... Person String
  • 47. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier String n = person.name; // Loading an object reference from heap <load barrier needed here> 47 String name; int age; double height; ... Person String
  • 48. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier String n = person.name; // Loading an object reference from heap <load barrier needed here> String p = n; // No barrier, not a load from heap n.isEmpty(); // No barrier, not a load from heap int age = person.age; // No barrier, not an object reference 48 String name; int age; double height; ... Person String
  • 49. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier String n = person.name; // Loading an object reference from heap <load barrier needed here> 49 String name; int age; double height; ... Person String
  • 50. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier String n = person.name; // Loading an object reference from heap if (n & bad_bit_mask) { slow_path(register_for(n), address_of(person.name)); } 50 String name; int age; double height; ... Person String
  • 51. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier mov 0x10(%rax), %rbx // String n = person.name; test %rbx, (0x16)%r15 // Bad color? jnz slow_path // Yes -> Enter slow path and // mark/relocate/remap, adjust // 0x10(%rax) and %rbx 51
  • 52. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Load Barrier mov 0x10(%rax), %rbx // String n = person.name; test %rbx, (0x16)%r15 // Bad color? jnz slow_path // Yes -> Enter slow path and // mark/relocate/remap, adjust // 0x10(%rax) and %rbx ~4% 実行オーバーヘッド SPECjbb®2015 52
  • 53. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | パフォーマンス 53
  • 54. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Mode: Composite Heap Size: 128G OS: Oracle Linux 7.4 HW: Intel Xeon E5-2690 2.9GHz 2 sockets, 16 cores (32 hw-threads) SPECjbb®2015 is a registered trademark of the Standard Performance Evaluation Corporation (spec.org). The actual results are not represented as compliant because the SUT may not meet SPEC's requirements for general availability. SPECjbb®2015 – Score 54 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ZGC Parallel G1 (Higher is better) max-JOPS (Throughput) critical-JOPS (Throughput with latency requirements)
  • 55. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Mode: Composite Heap Size: 128G OS: Oracle Linux 7.4 HW: Intel Xeon E5-2690 2.9GHz 2 sockets, 16 cores (32 hw-threads) SPECjbb®2015 is a registered trademark of the Standard Performance Evaluation Corporation (spec.org). The actual results are not represented as compliant because the SUT may not meet SPEC's requirements for general availability. SPECjbb®2015 – Score 55 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ZGC Parallel G1 (Higher is better) max-JOPS (Throughput) critical-JOPS (Throughput with latency requirements) 50% 29%
  • 56. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 0 100 200 300 400 500 600 ZGC Parallel G1 GCPauseTimes(ms) Linear scale (Lower is better) Average 95th percentile 99th percentile 99.9th percentile Max SPECjbb®2015 – Pause Times 56
  • 57. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 1 10 100 1000 ZGC Parallel G1 GCPauseTimes(ms) Logarithmic scale (Lower is better) Average 95th percentile 99th percentile 99.9th percentile Max SPECjbb®2015 – Pause Times 57
  • 58. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 1 10 100 1000 ZGC Parallel G1 GCPauseTimes(ms) Logarithmic scale (Lower is better) Average 95th percentile 99th percentile 99.9th percentile Max SPECjbb®2015 – Pause Times 58 1.96 1.10 156 306 211 544
  • 59. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 1 10 100 1000 ZGC Parallel G1 GCPauseTimes(ms) Logarithmic scale (Lower is better) Average 95th percentile 99th percentile 99.9th percentile Max SPECjbb®2015 – Pause Times 59 1.96 1.10 156 306 211 544
  • 60. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC の使い方 60
  • 61. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 有効にする -XX:+UseZGC 61
  • 62. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 有効にする -XX:+UnlockExperimentalVMOptions -XX:+UseZGC 62
  • 63. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | チューニング 63
  • 64. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | チューニング -Xmx<size> 最大のヒープサイズ 64
  • 65. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | チューニング -Xmx<size> -XX:ConcGCThreads=<number> (必要に応じて)GC のワーカースレッド 65
  • 66. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | チューニング -Xmx<size> -XX:ConcGCThreads=<number> これだけ? 66
  • 67. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ログ出力 -Xlog:gc (基本) -Xlog:gc* (詳細) 67
  • 68. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Proactive) 13426M(10%)->2492M(2%) Garbage Collection (Allocation Rate) 87676M(67%)->19578M(15%) Garbage Collection (Allocation Rate) 55302M(42%)->17646M(13%) Garbage Collection (Allocation Rate) 61794M(47%)->26794M(20%) Garbage Collection (Allocation Rate) 60856M(46%)->31926M(24%) Garbage Collection (Allocation Rate) 52744M(40%)->38050M(29%) Garbage Collection (Allocation Rate) 42542M(32%)->32204M(25%) Garbage Collection (Allocation Rate) 49974M(38%)->8534M(7%) Garbage Collection (System.gc()) 8534M(7%)->282M(0%) Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%) Garbage Collection (Allocation Rate) 42478M(32%)->23812M(18%) Garbage Collection (Allocation Rate) 56714M(43%)->29090M(22%) Garbage Collection (Allocation Rate) 62802M(48%)->28648M(22%) Garbage Collection (Allocation Rate) 59748M(46%)->23770M(18%) Garbage Collection (Allocation Rate) 74946M(57%)->23284M(18%) Garbage Collection (System.gc()) 44902M(34%)->422M(0%) Garbage Collection (Allocation Rate) 94510M(72%)->20456M(16%) Garbage Collection (Allocation Rate) 59694M(46%)->25834M(20%) Garbage Collection (Allocation Rate) 63494M(48%)->29128M(22%) Garbage Collection (Allocation Rate) 59034M(45%)->27094M(21%) Garbage Collection (Allocation Rate) 66110M(50%)->25278M(19%) Garbage Collection (Allocation Rate) 73410M(56%)->27968M(21%) Garbage Collection (Allocation Rate) 70010M(53%)->32236M(25%) Garbage Collection (Allocation Rate) 64444M(49%)->27612M(21%) Garbage Collection (Allocation Rate) 64484M(49%)->29910M(23%) Garbage Collection (Allocation Rate) 64128M(49%)->33184M(25%) Garbage Collection (Allocation Rate) 59148M(45%)->27800M(21%) Garbage Collection (Allocation Rate) 63104M(48%)->27976M(21%) Garbage Collection (Allocation Rate) 64418M(49%)->34390M(26%) Garbage Collection (Allocation Rate) 52284M(40%)->30654M(23%) Garbage Collection (Allocation Rate) 58746M(45%)->32028M(24%) Garbage Collection (Allocation Rate) 59468M(45%)->32804M(25%) Garbage Collection (Allocation Rate) 53342M(41%)->18436M(14%) 68
  • 69. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Proactive) 13426M(10%)->2492M(2%) Garbage Collection (Allocation Rate) 87676M(67%)->19578M(15%) Garbage Collection (Allocation Rate) 55302M(42%)->17646M(13%) Garbage Collection (Allocation Rate) 61794M(47%)->26794M(20%) Garbage Collection (Allocation Rate) 60856M(46%)->31926M(24%) Garbage Collection (Allocation Rate) 52744M(40%)->38050M(29%) Garbage Collection (Allocation Rate) 42542M(32%)->32204M(25%) Garbage Collection (Allocation Rate) 49974M(38%)->8534M(7%) Garbage Collection (System.gc()) 8534M(7%)->282M(0%) Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%) Garbage Collection (Allocation Rate) 42478M(32%)->23812M(18%) Garbage Collection (Allocation Rate) 56714M(43%)->29090M(22%) Garbage Collection (Allocation Rate) 62802M(48%)->28648M(22%) Garbage Collection (Allocation Rate) 59748M(46%)->23770M(18%) Garbage Collection (Allocation Rate) 74946M(57%)->23284M(18%) Garbage Collection (System.gc()) 44902M(34%)->422M(0%) Garbage Collection (Allocation Rate) 94510M(72%)->20456M(16%) Garbage Collection (Allocation Rate) 59694M(46%)->25834M(20%) Garbage Collection (Allocation Rate) 63494M(48%)->29128M(22%) Garbage Collection (Allocation Rate) 59034M(45%)->27094M(21%) Garbage Collection (Allocation Rate) 66110M(50%)->25278M(19%) Garbage Collection (Allocation Rate) 73410M(56%)->27968M(21%) Garbage Collection (Allocation Rate) 70010M(53%)->32236M(25%) Garbage Collection (Allocation Rate) 64444M(49%)->27612M(21%) Garbage Collection (Allocation Rate) 64484M(49%)->29910M(23%) Garbage Collection (Allocation Rate) 64128M(49%)->33184M(25%) Garbage Collection (Allocation Rate) 59148M(45%)->27800M(21%) Garbage Collection (Allocation Rate) 63104M(48%)->27976M(21%) Garbage Collection (Allocation Rate) 64418M(49%)->34390M(26%) Garbage Collection (Allocation Rate) 52284M(40%)->30654M(23%) Garbage Collection (Allocation Rate) 58746M(45%)->32028M(24%) Garbage Collection (Allocation Rate) 59468M(45%)->32804M(25%) Garbage Collection (Allocation Rate) 53342M(41%)->18436M(14%) 69 Garbage Collection (Allocation Rate) 95454M(73%)->25660M(20%)
  • 70. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Allocation Rate) Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms Load: 15.77/10.68/9.93 MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8% Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) Relocation: Successful, 867M relocated NMethods: 3209 registered, 1559 unregistered Soft: 466881 encountered, 0 discovered, 0 enqueued Weak: 5421 encountered, 3526 discovered, 1742 enqueued Final: 55 encountered, 6 discovered, 0 enqueued Phantom: 74 encountered, 59 discovered, 0 enqueued Mark Start Mark End Relocate Start Relocate End High Low Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) - - Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - - Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - - Reclaimed: - - 18270M (14%) 121496M (93%) - - Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%) 70
  • 71. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Allocation Rate) Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms Load: 15.77/10.68/9.93 MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8% Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) Relocation: Successful, 867M relocated NMethods: 3209 registered, 1559 unregistered Soft: 466881 encountered, 0 discovered, 0 enqueued Weak: 5421 encountered, 3526 discovered, 1742 enqueued Final: 55 encountered, 6 discovered, 0 enqueued Phantom: 74 encountered, 59 discovered, 0 enqueued Mark Start Mark End Relocate Start Relocate End High Low Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) - - Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - - Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - - Reclaimed: - - 18270M (14%) 121496M (93%) - - Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%) 71 Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms
  • 72. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Allocation Rate) Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms Load: 15.77/10.68/9.93 MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8% Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) Relocation: Successful, 867M relocated NMethods: 3209 registered, 1559 unregistered Soft: 466881 encountered, 0 discovered, 0 enqueued Weak: 5421 encountered, 3526 discovered, 1742 enqueued Final: 55 encountered, 6 discovered, 0 enqueued Phantom: 74 encountered, 59 discovered, 0 enqueued Mark Start Mark End Relocate Start Relocate End High Low Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) - - Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - - Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - - Reclaimed: - - 18270M (14%) 121496M (93%) - - Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%) 72 Mark Start Mark End Relocate Start Relocate End Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) Garbage: - 121623M (93%) 103353M (79%) 127M (0%) Reclaimed: - - 18270M (14%) 121496M (93%)
  • 73. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Phases Concurrent Mark/Remap Pause Mark End Pause Relocate StartPause Mark Start Concurrent Prepare for Reloc. Concurrent Relocate GC Cycle 73
  • 74. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Allocation Rate) Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms Load: 15.77/10.68/9.93 MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8% Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) Relocation: Successful, 867M relocated NMethods: 3209 registered, 1559 unregistered Soft: 466881 encountered, 0 discovered, 0 enqueued Weak: 5421 encountered, 3526 discovered, 1742 enqueued Final: 55 encountered, 6 discovered, 0 enqueued Phantom: 74 encountered, 59 discovered, 0 enqueued Mark Start Mark End Relocate Start Relocate End High Low Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) - - Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - - Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - - Reclaimed: - - 18270M (14%) 121496M (93%) - - Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%) 74 Mark Start Mark End Relocate Start Relocate End Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) Garbage: - 121623M (93%) 103353M (79%) 127M (0%) Reclaimed: - - 18270M (14%) 121496M (93%)
  • 75. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | Garbage Collection (Allocation Rate) Pause Mark Start 0.949ms Concurrent Mark 1151.425ms Pause Mark End 0.882ms Concurrent Process Non-Strong References 0.367ms Concurrent Reset Relocation Set 18.090ms Concurrent Destroy Detached Pages 0.002ms Concurrent Select Relocation Set 12.295ms Concurrent Prepare Relocation Set 70.922ms Pause Relocate Start 1.419ms Concurrent Relocate 645.941ms Load: 15.77/10.68/9.93 MMU: 2ms/0.0%, 5ms/57.5%, 10ms/78.7%, 20ms/87.8%, 50ms/93.7%, 100ms/96.8% Mark: 4 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s) Relocation: Successful, 867M relocated NMethods: 3209 registered, 1559 unregistered Soft: 466881 encountered, 0 discovered, 0 enqueued Weak: 5421 encountered, 3526 discovered, 1742 enqueued Final: 55 encountered, 6 discovered, 0 enqueued Phantom: 74 encountered, 59 discovered, 0 enqueued Mark Start Mark End Relocate Start Relocate End High Low Capacity: 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) 131072M (100%) Reserve: 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) 72M (0%) Free: 7654M (6%) 5898M (4%) 24018M (18%) 126296M (96%) 126306M (96%) 5866M (4%) Used: 123346M (94%) 125102M (95%) 106982M (82%) 4704M (4%) 125134M (95%) 4694M (4%) Live: - 1722M (1%) 1722M (1%) 1722M (1%) - - Allocated: - 1796M (1%) 1962M (1%) 3766M (3%) - - Garbage: - 121623M (93%) 103353M (79%) 127M (0%) - - Reclaimed: - - 18270M (14%) 121496M (93%) - - Garbage Collection (Allocation Rate) 123346M(94%)->4704M(4%) 75
  • 76. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | GC Statistics (統計) === Garbage Collection Statistics ======================================================================================================================= Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms Subphase: Concurrent Mark 1151.055 / 1151.287 1162.724 / 1452.499 1059.510 / 3028.035 1059.510 / 3028.035 ms Subphase: Concurrent Mark Idle 1.058 / 1.060 1.088 / 2.320 2.727 / 22.115 2.727 / 22.115 ms Subphase: Concurrent Mark Try Flush 0.779 / 1.862 0.603 / 5.829 8.556 / 50.035 8.556 / 50.035 ms Subphase: Concurrent Mark Try Terminate 0.849 / 1.062 0.940 / 2.321 2.766 / 45.114 2.766 / 45.114 ms 76
  • 77. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | === Garbage Collection Statistics ======================================================================================================================= Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms ... 77
  • 78. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | === Garbage Collection Statistics ======================================================================================================================= Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms ... Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s 78
  • 79. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | === Garbage Collection Statistics ======================================================================================================================= Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Collector: Garbage Collection Cycle 1906.804 / 1906.804 1871.019 / 2184.368 2764.747 / 4655.377 2764.747 / 4655.377 ms Contention: Mark Segment Reset Contention 3 / 24 0 / 34 0 / 73 0 / 73 ops/s Contention: Mark SeqNum Reset Contention 0 / 0 0 / 0 0 / 2 0 / 2 ops/s Contention: Relocation Contention 27 / 275 9 / 1137 14 / 9460 14 / 9460 ops/s Critical: Allocation Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: Allocation Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Critical: GC Locker Stall 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Critical: GC Locker Stall 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Allocation Rate 1458 / 1672 1089 / 1904 1679 / 7914 1679 / 7914 MB/s Memory: Heap Used After Mark 125102 / 125102 97411 / 125102 70566 / 125102 70566 / 125102 MB Memory: Heap Used After Relocation 4704 / 4704 4019 / 4814 17042 / 34092 17042 / 34092 MB Memory: Heap Used Before Mark 123346 / 123346 95981 / 123346 61669 / 123346 61669 / 123346 MB Memory: Heap Used Before Relocation 106982 / 106982 85095 / 106982 60136 / 106982 60136 / 106982 MB Memory: Out Of Memory 0 / 0 0 / 0 0 / 0 0 / 0 ops/s Memory: Page Cache Flush 0 / 0 0 / 0 0 / 0 0 / 0 MB/s Memory: Page Cache Hit L1 710 / 1037 499 / 1037 771 / 3777 771 / 3777 ops/s Memory: Page Cache Hit L2 12 / 77 3 / 179 5 / 517 5 / 517 ops/s Memory: Page Cache Miss 8 / 81 19 / 651 29 / 1932 29 / 1932 ops/s Memory: Undo Object Allocation Failed 1 / 12 0 / 18 0 / 64 0 / 64 ops/s Memory: Undo Object Allocation Succeeded 26 / 263 9 / 1137 13 / 9460 13 / 9460 ops/s Memory: Undo Page Allocation 3 / 30 5 / 249 9 / 1027 9 / 1027 ops/s Phase: Concurrent Destroy Detached Pages 0.002 / 0.002 0.001 / 0.002 0.041 / 2.230 0.041 / 2.230 ms Phase: Concurrent Mark 1151.425 / 1151.425 1163.417 / 1452.750 1584.987 / 3028.289 1584.987 / 3028.289 ms Phase: Concurrent Mark Continue 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 0.000 / 0.000 ms Phase: Concurrent Prepare Relocation Set 70.922 / 70.922 67.627 / 74.532 81.298 / 374.926 81.298 / 374.926 ms Phase: Concurrent Process Non-Strong References 0.367 / 0.367 0.391 / 0.463 0.394 / 0.774 0.394 / 0.774 ms Phase: Concurrent Relocate 645.941 / 645.941 602.340 / 645.941 1051.985 / 2198.100 1051.985 / 2198.100 ms Phase: Concurrent Reset Relocation Set 18.090 / 18.090 13.636 / 18.090 11.832 / 28.342 11.832 / 28.342 ms Phase: Concurrent Select Relocation Set 12.295 / 12.295 15.162 / 28.735 20.960 / 57.464 20.960 / 57.464 ms Phase: Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms Phase: Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms Phase: Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms ... Last 10s Last 10m Last 10h Total Avg / Max Avg / Max Avg / Max Avg / Max Pause Mark End 0.882 / 0.882 0.997 / 1.095 0.941 / 1.199 0.941 / 1.199 ms Pause Mark Start 0.949 / 0.949 0.875 / 0.983 0.832 / 1.013 0.832 / 1.013 ms Pause Relocate Start 1.419 / 1.419 1.532 / 2.091 1.474 / 2.127 1.474 / 2.127 ms 79
  • 80. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ 80
  • 81. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート 81
  • 82. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート -XX:+UnlockExperimentalVMOptions 82
  • 83. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート • 長期 – 世代別 – 1ミリ秒以下の停止時間 – 他のプラットフォームのサポート – Graal JIT の対応 83
  • 84. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート • 長期 – 世代別 – 1ミリ秒以下の停止時間 – 他のプラットフォームのサポート – Graal JIT の対応 世代別 • より速いアロケーション速度 • ヒープオーバーヘッドを抑える • CPU 使用量を減らす 84
  • 85. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート • 長期 – 世代別 – 1ミリ秒以下の停止時間 – 他のプラットフォームのサポート – Graal JIT の対応 1ミリ秒以下の停止時間 • 出来るはず • ルート参照の数を減らす • Time-to-Safepoint、など 85
  • 86. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート • 長期 – 世代別 – 1ミリ秒以下の停止時間 – 他のプラットフォームのサポート – Graal JIT の対応 他のプラットフォーム • macOS? • Windows? • Aarch64? 86
  • 87. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ロードマップ • 短期 – 正式サポート • 長期 – 世代別 – 1ミリ秒以下の停止時間 – 他のプラットフォームのサポート – Graal JIT の対応 87
  • 88. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 是非参加してください! 88
  • 89. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC プロジェクト zgc-dev@openjdk.java.net http://wiki.openjdk.java.net/display/zgc/Main Follow, Participate, Give Feedback 89
  • 90. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ZGC Project http://hg.openjdk.java.net/jdk/jdk http://hg.openjdk.java.net/zgc/zgc ソースコード 90
  • 91. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | ありがとうございます! 91
  • 92. Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 質問? 92