1/*
2 * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25#include "precompiled.hpp"
26#include "gc/shared/gcCause.hpp"
27
28const char* GCCause::to_string(GCCause::Cause cause) {
29 switch (cause) {
30 case _java_lang_system_gc:
31 return "System.gc()";
32
33 case _full_gc_alot:
34 return "FullGCAlot";
35
36 case _scavenge_alot:
37 return "ScavengeAlot";
38
39 case _allocation_profiler:
40 return "Allocation Profiler";
41
42 case _jvmti_force_gc:
43 return "JvmtiEnv ForceGarbageCollection";
44
45 case _gc_locker:
46 return "GCLocker Initiated GC";
47
48 case _heap_inspection:
49 return "Heap Inspection Initiated GC";
50
51 case _heap_dump:
52 return "Heap Dump Initiated GC";
53
54 case _wb_young_gc:
55 return "WhiteBox Initiated Young GC";
56
57 case _wb_conc_mark:
58 return "WhiteBox Initiated Concurrent Mark";
59
60 case _wb_full_gc:
61 return "WhiteBox Initiated Full GC";
62
63 case _archive_time_gc:
64 return "Full GC for -Xshare:dump";
65
66 case _no_gc:
67 return "No GC";
68
69 case _allocation_failure:
70 return "Allocation Failure";
71
72 case _tenured_generation_full:
73 return "Tenured Generation Full";
74
75 case _metadata_GC_threshold:
76 return "Metadata GC Threshold";
77
78 case _metadata_GC_clear_soft_refs:
79 return "Metadata GC Clear Soft References";
80
81 case _cms_generation_full:
82 return "CMS Generation Full";
83
84 case _cms_initial_mark:
85 return "CMS Initial Mark";
86
87 case _cms_final_remark:
88 return "CMS Final Remark";
89
90 case _cms_concurrent_mark:
91 return "CMS Concurrent Mark";
92
93 case _old_generation_expanded_on_last_scavenge:
94 return "Old Generation Expanded On Last Scavenge";
95
96 case _old_generation_too_full_to_scavenge:
97 return "Old Generation Too Full To Scavenge";
98
99 case _adaptive_size_policy:
100 return "Ergonomics";
101
102 case _g1_inc_collection_pause:
103 return "G1 Evacuation Pause";
104
105 case _g1_humongous_allocation:
106 return "G1 Humongous Allocation";
107
108 case _g1_periodic_collection:
109 return "G1 Periodic Collection";
110
111 case _dcmd_gc_run:
112 return "Diagnostic Command";
113
114 case _shenandoah_allocation_failure_evac:
115 return "Allocation Failure During Evacuation";
116
117 case _shenandoah_stop_vm:
118 return "Stopping VM";
119
120 case _shenandoah_concurrent_gc:
121 return "Concurrent GC";
122
123 case _shenandoah_traversal_gc:
124 return "Traversal GC";
125
126 case _shenandoah_upgrade_to_full_gc:
127 return "Upgrade To Full GC";
128
129 case _z_timer:
130 return "Timer";
131
132 case _z_warmup:
133 return "Warmup";
134
135 case _z_allocation_rate:
136 return "Allocation Rate";
137
138 case _z_allocation_stall:
139 return "Allocation Stall";
140
141 case _z_proactive:
142 return "Proactive";
143
144 case _z_high_usage:
145 return "High Usage";
146
147 case _last_gc_cause:
148 return "ILLEGAL VALUE - last gc cause - ILLEGAL VALUE";
149
150 default:
151 return "unknown GCCause";
152 }
153 ShouldNotReachHere();
154}
155