Unified JVM Logging

Yuji Kubota
Yuji KubotaEngineer at NTT
Unified JVM Logging!
KUBOTA Yuji
@sugarlife+
NTT OSSセンタ+
Copyright©2017 NTT corp. All Rights Reserved.+
2017/05+
はじめに!
• 本セッションは Java 9 から変
わる JVM ログの設定方法を把
握することが第一目標です
• Log4J を代表としたロギングの
java.util.logging は扱いません
ここは口頭補足用なので見えなくても OK
Copyright©2017 NTT corp. All Rights Reserved.+ 2!
おやくそく!
• 本セッション (スライド) は、
以下の JVM 実装に基づきます
– OpenJDK 9 EA b170 (HotSpot VM)
– jdk9/jdk9/hotspot 12762:b3ee8ab233ed
EA = Early Access。正式リリース前のバイナリ
Copyright©2017 NTT corp. All Rights Reserved.+ 3!
$	java	-version	
java	version	"9-ea"	
Java(TM)	SE	Runtime	Environment	(build	9-ea+170)	
Java	HotSpot(TM)	64-Bit	Server	VM	(build	9-ea+170,	mixed	mode)+
「楽してJVMを学びたい」シリーズを喋ってる人
Copyright©2017 NTT corp. All Rights Reserved.+ 4!
KUBOTA Yuji (@sugarlife)
Java Technical Support Engineer
@NTT OSS センタ
OpenJDK author, IcedTea committer
Speaker (JavaOne, JJUG, etc…)
Who I am!
Agenda!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行
• お役立ち(?)情報
設定の仕方を覚えて帰りましょう
Copyright©2017 NTT corp. All Rights Reserved.+ 5!
Next!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行
• お役立ち(?)情報
JDK 9 から変わる理由
Copyright©2017 NTT corp. All Rights Reserved.+ 6!
歴史的経緯!
• 元々は標準出力
• ファイルにも出力に対応
• タイムスタンプやより詳細な内
容を出力するように改修
• GCログ、JITコンパイルログな
ど出力される内容(種類)も増加
バージョンを重ねるごとにアドホックに改善
Copyright©2017 NTT corp. All Rights Reserved.+ 7!
問題点!
• 出力内容に一貫性がない
– コンポーネントごとにまちまち
– メッセージも半固定で柔軟に実装
できない (OpenJDK 開発での問題)
• 設定が多種多様過ぎる
• レベルやカテゴリ制御がない
アドホック過ぎて一貫性が失われた
Copyright©2017 NTT corp. All Rights Reserved.+ 8!
一貫性のない例!
Copyright©2017 NTT corp. All Rights Reserved.+ 9!
[GC	[1	CMS-initial-mark:	2925342K(3853568K)]	2937899K(4160256K),	
0.0098890	secs]	[Times:	user=0.00	sys=0.00,	real=0.01	secs]		
[CMS-concurrent-mark-start]	
[CMS-concurrent-mark:	0.454/0.454	secs]	[Times:	user=1.38	sys=0.00,	
real=0.45	secs]		
[GC3.586:	[ParNew	(promotion	failed):	232923K->283768K(306688K),	
0.1500250	secs]	3.736:	[CMS:	3102003K->240898K(3853568K),	1.8438740	
secs]	3334926K->259898K(4160256K),	[CMS	Perm	:	125100K-
>115103K(262144K)],	1.9941370	secs]	[Times:	user=2.05	sys=0.00,	
real=1.99	secs]	
	
[Full	GC62.696:	[CMS64.460:	[CMS-concurrent-sweep:	2.319/2.386	
secs]	[Times:	user=3.75	sys=0.13,	real=2.39	secs]	(concurrent	mode	
failure):	3315076K-	
JDK7uのログ+
マイナーアップデートで変わるのが一番辛い
一貫性のない例!
マイナーアップデートで変わるのが一番辛い
Copyright©2017 NTT corp. All Rights Reserved.+ 10!
[GC	[1	CMS-initial-mark:	2925342K(3853568K)]	2937899K(4160256K),	
0.0098890	secs]	[Times:	user=0.00	sys=0.00,	real=0.01	secs]		
[CMS-concurrent-mark-start]	
[CMS-concurrent-mark:	0.454/0.454	secs]	[Times:	user=1.38	sys=0.00,	
real=0.45	secs]		
[GC3.586:	[ParNew	(promotion	failed):	232923K->283768K(306688K),	
0.1500250	secs]	3.736:	[CMS:	3102003K->240898K(3853568K),	1.8438740	
secs]	3334926K->259898K(4160256K),	[CMS	Perm	:	125100K-
>115103K(262144K)],	1.9941370	secs]	[Times:	user=2.05	sys=0.00,	
real=1.99	secs]	
	
[Full	GC62.696:	[CMS64.460:	[CMS-concurrent-sweep:	2.319/2.386	
secs]	[Times:	user=3.75	sys=0.13,	real=2.39	secs]	(concurrent	mode	
failure):	3315076K-	
唐突かつ特に
意味はない+
CMS-initial-mark-startは?+
出ないケースがある(上のログもFull GC)+
フェーズごとに異なる値(size)+
JDK7uのログ+
フェーズごとに異なる値(time)+
問題点!
• 出力内容に一貫性がない
– コンポーネントごとにまちまち
• 設定が多種多様過ぎる
– 実行後は変更ができない
• レベルやカテゴリ制御がない
多種多様性が便利なのはその通り
Copyright©2017 NTT corp. All Rights Reserved.+ 11!
PrintXX, TraceXX だけでも 66 種類ある(8u131)
Copyright©2017 NTT corp. All Rights Reserved.+ 12!
PrintAdaptiveSizePolicy+
PrintCMSInitiationStatistics+
PrintCMSStatistics+
PrintClassHistogram+
PrintClassHistogramAfterFullGC+
PrintClassHistogramBeforeFullGC+
PrintCodeCache+
PrintCodeCacheOnCompilation+
PrintCommandLineFlags+
PrintCompilation+
PrintConcurrentLocks+
PrintFLSCensus+
PrintFLSStatistics+
PrintGC+
PrintGCApplicationConcurrentTime+
PrintGCApplicationStoppedTime+
PrintGCCause+
PrintGCDateStamps+
PrintGCDetails+
PrintGCID+
PrintGCTaskTimeStamps+
PrintGCTimeStamps+
PrintHeapAtGC+
PrintHeapAtGCExtended+
PrintHeapAtSIGBREAK+
PrintJNIGCStalls+
PrintJNIResolving+
PrintOldPLAB+
PrintOopAddress+
PrintPLAB	
PrintPromotionFailure+
PrintReferenceGC+
PrintSafepointStatistics+
PrintSharedArchiveAndExit	
PrintSharedDictionary+
PrintSharedSpaces	
PrintTLAB+
PrintTenuringDistribution+
PrintTieredEvents+
PrintVMOptions+
PrintVMQWaitTime+
PrintWarnings+
TraceBiasedLocking+
TraceClassLoading+
TraceClassLoadingPreorder+
TraceClassPaths+
TraceClassResolution+
TraceClassUnloading	
TraceDynamicGCThreads+
TraceJVMTI+
PrintParallelOldGCPhaseTimes	
PrintStringDeduplicationStatistics+
PrintStringTableStatistics	
PrintSafepointStatisticsCount+
PrintSafepointStatisticsTimeout+
TraceGen0Time+
TraceGen1Time+
TraceLoaderConstraints+
TraceMetadataHumongousAllocation+
TraceMonitorInflation+
TraceParallelOldGCTasks+
TraceRedefineClasses+
TraceSafepointCleanupTime+
TraceSuspendWaitFailures+
設定の多種多様さ(一部例)!
○:後から変えられない
ので事前に把握が必要+
△:細やかな設定が可能+
◎:無理ゲー+
設定の多種多様さ!
• GC ログの場合
– 全て別々の設定
ログローテートは GC ログにだけある
Copyright©2017 NTT corp. All Rights Reserved.+ 13!
-Xloggc:/path/to/gc_%p_%t.log	#出力先	
-XX:+PrintGCDetails											#詳細出力	
-XX:+PrintGCDateStamps								#タイムスタンプ	
-XX:+UseGCLogFileRotation					#ログローテート		
-XX:GCLogFileSize=100m								#(〃)サイズ数	
-XX:NumberOfGCLogFiles=7						#(〃)世代数	
JDK8u131の設定+
問題点!
• 出力内容に一貫性がない
– コンポーネントごとにまちまち
• 設定が多種多様過ぎる
– 実行後は変更ができない
• レベルやカテゴリ管理がない
– デバッグレベルはあるが別バイナリ
デバッグ用バイナリは自分でビルドが必要
Copyright©2017 NTT corp. All Rights Reserved.+ 14!
カテゴリ管理がないと…!
– 正確な理解には実装の確認が必要
– 複数種別のログが混ざると経験に
基づいて読み解く必要がある
デバッグログはパーサーを書くのも大変
Copyright©2017 NTT corp. All Rights Reserved.+ 15!
[GC3.586:	[ParNew	(promotion	failed):	232923K->283768K(306688K),	
0.1500250	secs]	3.736:	[CMS:	3102003K->240898K(3853568K),	1.8438740	
secs]	3334926K->259898K(4160256K),	[CMS	Perm	:	125100K-
>115103K(262144K)],	1.9941370	secs]	[Times:	user=2.05	sys=0.00,	
real=1.99	secs]	
JDK7uのログ+
それぞれ何の値か判断可能か?+
問題点!
• 出力内容に一貫性がない
– コンポーネントごとにまちまち
• 設定が多種多様過ぎる
– 実行後は変更ができない
• レベルやカテゴリ管理がない
– デバッグレベルはあるが別バイナリ
アドホックに追加するのはもうやめよう
Copyright©2017 NTT corp. All Rights Reserved.+ 16!
Unified JVM Logging!
• フレームワークを導入して一貫
性を保つ (JEP 158)
– カテゴリ分け、ログレベルを導入
– 統一された実装・設定・出力
• 特に GC ログ周りを大幅に手入
れ (JEP 271)
JEP 271 は Unified GC Logging
Copyright©2017 NTT corp. All Rights Reserved.+ 17!
Quiz #1!
• Java 8 以前のログ出力に関係す
るフラグは -XX:+TraceXXX (17
種類) -XX:+PrintXXX(49種類)以
外にもある。マルかバツか。
マルバツクイズ
Copyright©2017 NTT corp. All Rights Reserved.+ 18!
Quiz #1!
• Java 8 以前のログ出力に関係す
るフラグは -XX:+TraceXXX (17
種類) -XX:+PrintXXX(49種類)以
外にもある。マルかバツか。
• マル。例えば ParallelGCVerbose,
ProfilerPrintByteCodeStatistics など
マルバツクイズ
Copyright©2017 NTT corp. All Rights Reserved.+ 19!
ドキュメントもほぼない
Next!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行
• お役立ち(?)情報
統一された設定とやらを見せてもらおうか!
Copyright©2017 NTT corp. All Rights Reserved.+ 20!
設定方法!
• シンプルな設定
– 全て -Xlog で設定する
「ログはこれ」と言えるのは大きい
Copyright©2017 NTT corp. All Rights Reserved.+ 21!
-Xlog	
 [:[what]	
 [:[output]	
 [:[decorators]	
 [:output-options]]]]
基本的な設定方法!
• -Xlog 全てのinfoログを標準出力
• -Xlog:help ヘルプメッセージ
• -Xlog:disable ログ無効化+
デフォルトは全 warning ログが標準出力される
Copyright©2017 NTT corp. All Rights Reserved.+ 22!
-Xlogを設定してない場合+
ログ例!
全 info ログを有効にしてバージョン表示
Copyright©2017 NTT corp. All Rights Reserved.+ 23!
%	java	-Xlog	-version	
[0.003s][info][os]	SafePoint	Polling	address:	0x00007f6d378bf000	
[0.003s][info][os]	Memory	Serialize	Page	address:	0x00007f6d378be000	
[0.003s][info][os,thread]	Capturing	initial	stack	in	user	thread:	req.	size:	
1024K,	actual	size:	1024K,	top=0x00007ffc84f89000,	bottom=0x00007ffc84e89000	
[0.003s][info][os							]	HotSpot	is	running	with	glibc	2.24,	NPTL	2.24	
:	
[0.362s][info][startuptime								]	Create	VM,	0.3598174	secs	
java	version	"9-ea"	
Java(TM)	SE	Runtime	Environment	(build	9-ea+165)	
Java	HotSpot(TM)	64-Bit	Server	VM	(build	9-ea+165,	mixed	mode)	
[0.364s][info][os,thread										]	JavaThread	detaching	(tid:	110366).	
:	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110367,	pthread	id:	
140272699377408).	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110376,	pthread	id:	
140272177387264).	
ログ内容+
ログ例!
デコレータ(decorator):各ログに付く汎用情報
Copyright©2017 NTT corp. All Rights Reserved.+ 24!
%	java	-Xlog	-version	
[0.003s][info][os]	SafePoint	Polling	address:	0x00007f6d378bf000	
[0.003s][info][os]	Memory	Serialize	Page	address:	0x00007f6d378be000	
[0.003s][info][os,thread]	Capturing	initial	stack	in	user	thread:	req.	size:	
1024K,	actual	size:	1024K,	top=0x00007ffc84f89000,	bottom=0x00007ffc84e89000	
[0.003s][info][os							]	HotSpot	is	running	with	glibc	2.24,	NPTL	2.24	
:	
[0.362s][info][startuptime								]	Create	VM,	0.3598174	secs	
java	version	"9-ea"	
Java(TM)	SE	Runtime	Environment	(build	9-ea+165)	
Java	HotSpot(TM)	64-Bit	Server	VM	(build	9-ea+165,	mixed	mode)	
[0.364s][info][os,thread										]	JavaThread	detaching	(tid:	110366).	
:	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110367,	pthread	id:	
140272699377408).	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110376,	pthread	id:	
140272177387264).	
起動経過時間、
ログレベル、タグ
(デフォルト)+
ログ内容+
ログ例!
タグ(tags):各ログは必ず1~5個のタグに属する
Copyright©2017 NTT corp. All Rights Reserved.+ 25!
%	java	-Xlog	-version	
[0.003s][info][os]	SafePoint	Polling	address:	0x00007f6d378bf000	
[0.003s][info][os]	Memory	Serialize	Page	address:	0x00007f6d378be000	
[0.003s][info][os,thread]	Capturing	initial	stack	in	user	thread:	req.	size:	
1024K,	actual	size:	1024K,	top=0x00007ffc84f89000,	bottom=0x00007ffc84e89000	
[0.003s][info][os							]	HotSpot	is	running	with	glibc	2.24,	NPTL	2.24	
:	
[0.362s][info][startuptime								]	Create	VM,	0.3598174	secs	
java	version	"9-ea"	
Java(TM)	SE	Runtime	Environment	(build	9-ea+165)	
Java	HotSpot(TM)	64-Bit	Server	VM	(build	9-ea+165,	mixed	mode)	
[0.364s][info][os,thread										]	JavaThread	detaching	(tid:	110366).	
:	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110367,	pthread	id:	
140272699377408).	
[0.371s][info][os,thread										]	Thread	finished	(tid:	110376,	pthread	id:	
140272177387264).	
起動経過時間、
ログレベル、タグ
(デフォルト)+
タグ≒ログのカテゴリ+
ログ内容+カテゴリに沿ったログ内容+
Quiz #2!
•  java	-Xlog:disable	-version を実行
した場合、バージョン表示は出る?
デフォルト(-Xlogの設定無し)は warning が有効
Copyright©2017 NTT corp. All Rights Reserved.+ 26!
ログ無効+
Quiz #2!
•  java	-Xlog:disable	-version を実行
した場合、バージョン表示は出る?
•  出ます。バージョン関係はJVMログ
とは別扱いのエラーメッセージです+
•  ログではなく java コマンドの応答だ
と考えると解りやすい
前スライドで decorator が出てないのが解る
Copyright©2017 NTT corp. All Rights Reserved.+ 27!
ログ無効+
Next!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行
• お役立ち(?)情報
設定方法のポリシーを学びましょう
Copyright©2017 NTT corp. All Rights Reserved.+ 28!
Syntax!
– what:出力内容をタグとレベルで選択+
– output:出力先の指定+
– decorators:デコレータの指定+
– output-options:ログローテート設定
全て省略できる(未指定時用の値が設定される)
Copyright©2017 NTT corp. All Rights Reserved.+ 29!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]
decorator!
• 各ログに追記される汎用情報+
– 未指定の場合: uptime, level, tags
• 起動時間(秒)、ログレベル、タグ
出力順は固定
Copyright©2017 NTT corp. All Rights Reserved.+ 30!
none,		
time	(t),	utctime	(utc),	timemillis	(tm),	timenanos	(tn),		
uptime	(u),	uptimemillis	(um),	uptimenanos	(un),	
hostname	(hn),	pid	(p),	tid	(ti),	level	(l),	tags	(tg)	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
何もなし+
decorator!
• 各ログに追記される汎用情報+
– 未指定の場合: uptime, level, tags
• 起動時間(秒)、ログレベル、タグ
出力順は固定
Copyright©2017 NTT corp. All Rights Reserved.+ 31!
none,		
time	(t),	utctime	(utc),	timemillis	(tm),	timenanos	(tn),		
uptime	(u),	uptimemillis	(um),	uptimenanos	(un),	
hostname	(hn),	pid	(p),	tid	(ti),	level	(l),	tags	(tg)	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
時刻+
起動時間+
何もなし+
decorator!
• 全部乗せ
– 「,」で区切れば複数指定できる+
指定の順番を変えても出力の順番はこの通り
Copyright©2017 NTT corp. All Rights Reserved.+ 32!
%	java	-Xlog:::t,utc,u,tm,um,tn,un,hn,p,ti,l,tg	
[2017-05-12T07:38:12.016-0700]	
[2017-05-12T14:38:12.016+0000]	
[14.101s]	
[1494599892016ms][14102ms]	
[963128253785077ns][14101433214ns]	
[localhost.localdomain][73398][115144]	
[info][os,thread															]		
Thread	finished	(tid:	115144,	pthread	id:	139879454586624).	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
※本来は一行表示+
decorator!
• 全部乗せ
– 「,」で区切れば複数指定できる+
pid はファイル名に付ければほぼ困らない
Copyright©2017 NTT corp. All Rights Reserved.+ 33!
%	java	-Xlog:::t,utc,u,tm,um,tn,un,hn,p,ti,l,tg	
[2017-05-12T07:38:12.016-0700]	
[2017-05-12T14:38:12.016+0000]	
[14.101s]	
[1494599892016ms][14102ms]	
[963128253785077ns][14101433214ns]	
[localhost.localdomain][73398][115144]	
[info][os,thread															]		
Thread	finished	(tid:	115144,	pthread	id:	139879454586624).	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
process id と thread
id は見分けにくい+
※本来は一行表示+
decorator!
• お勧めの最低設定
– (utc)time,level,tags
– 短命なプロセスや詳細解析の場合は
uptime(millis|nanos)もあると便利
ローカル時刻か UTC かはお好み
Copyright©2017 NTT corp. All Rights Reserved.+ 34!
%	java	-Xlog:::t,utc,l,tg	
[2017-05-12T07:38:12.016-0700]	
[2017-05-12T14:38:12.016+0000]	
[info][os,thread															]		
Thread	finished	(tid:	115144,	pthread	id:	139879454586624).	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
※本来は一行表示+
output, output-option!
•  output: 出力先 (未指定時:stdout)
– stdout / stderr / file=<filename>
• %p: pid, %t: 開始時刻 (filenameで利用)
•  output-option: ログローテート設定
– 「,」で区切って以下の二つを指定する
– filecount=n: 世代数 (未指定時:5)
– filesize=n: ファイルサイズ (未指定時:20M)
ローテート設定は指定して増やした方が無難	
Copyright©2017 NTT corp. All Rights Reserved.+ 35!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]
what!
• 出力内容をタグとレベルで指定
– Tag=Level
• -Xlog:all=info	
• -Xlog:gc*=debug	
• Level (未指定の場合:info)
trace は hotspot 内部実装を追ってる人向け
Copyright©2017 NTT corp. All Rights Reserved.+ 36!
off,	trace,	debug,	info,	warning,	error	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]
what!
• Tag (未指定の場合:all)
悪夢再び?
Copyright©2017 NTT corp. All Rights Reserved.+ 37!
add,	age,	alloc,	aot,	annotation,	arguments,	attach,	barrier,	biasedlocking,	blocks,	bot,	
breakpoint,	census,	class,	classhisto,	cleanup,	compaction,	constraints,	constantpool,	coops,	
cpu,	cset,	data,	defaultmethods,	dump,	ergo,	exceptions,	exit,	fingerprint,	freelist,	gc,	
hashtables,	heap,	humongous,	ihop,	iklass,	init,	itables,	jni,	jvmti,	liveness,	load,	loader,	
logging,	mark,	marking,	methodcomparator,	metadata,	metaspace,	mmu,	modules,	
monitorinflation,	monitormismatch,	nmethod,	normalize,	objecttagging,	obsolete,	oopmap,	os,	
pagesize,	patch,	path,	phases,	plab,	promotion,	preorder,	protectiondomain,	ref,	redefine,	
refine,	region,	remset,	purge,	resolve,	safepoint,	scavenge,	scrub,	stacktrace,	stackwalk,	
start,	startuptime,	state,	stats,	stringdedup,	stringtable,	stackmap,	subclass,	survivor,	
sweep,	task,	thread,	tlab,	time,	timer,	update,	unload,	verification,	verify,	vmoperation,	
vtables,	workgang,	jfr,	system,	parser,	bytecode,	setting,	event	
-Xlog[:[what][:[output][:[decorators][:output-options]]]]
Tags!
•  大分類から小分類まで混在して
おり、全部を覚える必要はない+
•  重要なタグの例+
– GC 関連:gc
– エラー関連:exceptions
– スレッド関連:os, thread
– 動作解析関連:class, vmoperation
実質二つのログしかないタグもある
Copyright©2017 NTT corp. All Rights Reserved.+ 38!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]
タグの設定方法!
タグは * + , を利用して柔軟に指定できる
Copyright©2017 NTT corp. All Rights Reserved.+ 39!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
TX+
T1+ T2+
all で
全部+
タグの設定方法!
Copyright©2017 NTT corp. All Rights Reserved.+ 40!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+
T1だけ。1タグのログは主にサマリ確認用
T2+
TX+
タグの設定方法!
T1関係全て。gc* 等、その機能全体の監視時に
Copyright©2017 NTT corp. All Rights Reserved.+ 41!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+
TX+
T2+
タグの設定方法!
この組合せのみ。別出力とか制限付けたい時に
Copyright©2017 NTT corp. All Rights Reserved.+ 42!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
TX+
T1+ T2+
タグの設定方法!
T1とT2が含まれる全てのログ。
Copyright©2017 NTT corp. All Rights Reserved.+ 43!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
TX+
T1+ T2+
タグの設定方法!
T1+T2* ≒ (T1+T2)*
Copyright©2017 NTT corp. All Rights Reserved.+ 44!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
TX+
T1+ T2+
これは
NG+
タグの設定方法!
T1とT2に関連するもの全部。大分類二つとか
Copyright©2017 NTT corp. All Rights Reserved.+ 45!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+ T2+
TX+
これは
NG+
T1+
タグの設定方法!
T1関連は出しつつ、T2関連は秘密にする
Copyright©2017 NTT corp. All Rights Reserved.+ 46!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:T1	
•  -Xlog:T1*	
•  -Xlog:T1+T2	
•  -Xlog:T1+T2*	
•  -Xlog:T1*+T2*	
•  -Xlog:T1*,T2*	
•  -Xlog:T1*,T2*=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
TX+
T2+
これは
NG+
タグの設定方法!
これはどうなるか?
Copyright©2017 NTT corp. All Rights Reserved.+ 47!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:	
	T1*=debug,T1+T2=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T2+T1+
TX+
タグの設定方法!
T1 関連ログを全てdebugログ出力
Copyright©2017 NTT corp. All Rights Reserved.+ 48!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:	
	T1*=debug,T1+T2=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+T1+
TX+
T2+
T1+
タグの設定方法!
T1とT2の組合せに限ったログ
Copyright©2017 NTT corp. All Rights Reserved.+ 49!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:	
	T1*=debug,T1+T2=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+T1+
TX+
T1+ T2+
T1+
タグの設定方法!
は、出力しない
Copyright©2017 NTT corp. All Rights Reserved.+ 50!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:	
	T1*=debug,T1+T2=off	
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T1+T1+
TX+
T1+ T2+
T1+
タグの設定方法!
最終的に橙色部分が debug レベルで出力
Copyright©2017 NTT corp. All Rights Reserved.+ 51!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
•  -Xlog:	
	T1*=debug,T1+T2=off	
T1+T1+
TX+
T1+
[T1						]	XXX	
[T2						]	XXX	
[TX						]	XXX	
[T1,T2			]	XXX	
[T1,TX			]	XXX	
[T2,TX			]	XXX	
[T1,T2,TX]	XXX	
T2+
具体的な使い道の例!
-Xlog:gc	
•  GC結果の概要だけ確認
-Xlog:class+load=debug,class+unload=debug	
•  クラスローディングとアンローディングの確認
-Xlog:gc*=debug,vmoperation=debug	
•  GC挙動全体の詳細とSTWに関わる処理の確認
-Xlog:gc*=debug,gc+humongous=off	
•  詳細確認したいがhumongousリージョン関連GCの場合、
本リージョンのメモリマップ情報が大量に出力されるの
でオフにする	(,で付け足して他もオフにできる)	
Copyright©2017 NTT corp. All Rights Reserved.+ 52!
-Xlog[:[what][:[output][:[decorators][:output-options]]]]	
フラグを調べるより直感的
TraceClassLoaderDataは
class+loader+data=debug+
Quiz #3!
•  java	-Xlog:disable	–Xlog:gc* とした
場合はどうなるか?
最初のみ有効 or 最後のみ有効 or それ以外?
Copyright©2017 NTT corp. All Rights Reserved.+ 53!
Quiz #3!
•  java	-Xlog:disable	–Xlog:gc* とした
場合はどうなるか?
•  前から順番に全て評価する。全部無
効にした後に、GC関係のinfoログを
有効にするので –Xlog:gc* と同義+
•  順番に評価されるので、最後の設定
のみ有効になるわけではない
別々のファイルに出力したい時などで使えます
Copyright©2017 NTT corp. All Rights Reserved.+ 54!
Next!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行
• お役立ち(?)情報
これまでの設定からこれからの設定へ
Copyright©2017 NTT corp. All Rights Reserved.+ 55!
Java 8からのGCログ移行!
•  Java 8
•  Java 9
以前より詳細になるが後でフィルタすれば良い
Copyright©2017 NTT corp. All Rights Reserved.+ 56!
-Xloggc:/path/to/gc_%p_%t.log	#出力先	
-XX:+PrintGCDetails											#詳細出力	
-XX:+PrintGCDateStamps								#タイムスタンプ	
-XX:+UseGCLogFileRotation					#ログローテート		
-XX:GCLogFileSize=100m								#(〃)サイズ数	
-XX:NumberOfGCLogFiles=7						#(〃)世代数	
-Xlog:gc*=debug:/path/to/gc_%p_%t.log:time,	
level,tags:filesize=100m,	filecount=7	
※ログサイズ等は適当です(普通は足りない)+
Next!
• そもそもなぜ変わるのか
• 設定方法を把握する
– 概要
– ログの設定方法
– Java 8 設定からの移行+
• お役立ち(?)情報
今回の変更により便利になったところなど
Copyright©2017 NTT corp. All Rights Reserved.+ 57!
起動後もログ設定が可能!
• jcmd で起動後から変えられる
無効化は jcmd VM.log disable を実行
Copyright©2017 NTT corp. All Rights Reserved.+ 58!
$	jcmd	<pid>	VM.log	output="file=/path/to/gc_%p_%t.log"	
	output_options="filecount=7,filesize=200m"	
	 	what="gc*=debug"	decorators="time,level,tags"	
<pid>:	
Command	executed	successfully	
$	jcmd	<pid>	VM.log	list	
<pid>:	
:		
Log	output	configuration:	
#0:	stdout	all=warning	uptime,level,tags	
#1:	stderr	all=off	uptime,level,tags	
#2:	file=/path/to/gc_%p_%t.log	gc*=debug	time,level,tags+
-Xlog の設定
方法と一緒+
output=#2 を指定
すると上書き可能+
強制ログローテート!
• jcmd で手動ローテートが可能
– ファイル出力かつfilecount=1以上
が条件
– filesize=0 にして cron 等で実行す
れば定期的なローテートが可能
filecount=0 だと実行しても同じファイルに追記
Copyright©2017 NTT corp. All Rights Reserved.+ 59!
$	jcmd	<pid>	VM.log	rotate	
<pid>:	
Command	executed	successfully
ログローテート!
•  -Xlog::test.log::filecount=n	
先ずは指定したファイルに出力
Copyright©2017 NTT corp. All Rights Reserved.+ 60!
test.log+
ログローテート!
•  -Xlog::test.log::filecount=n	
ローテート 1 回目
Copyright©2017 NTT corp. All Rights Reserved.+ 61!
test.log+
test.log.0+
←移動したら空ファイル+
ログローテート!
•  -Xlog::test.log::filecount=n	
ローテート 2 回目
Copyright©2017 NTT corp. All Rights Reserved.+ 62!
test.log+
test.log.0+ test.log.1+
ログローテート!
•  -Xlog::test.log::filecount=n	
ローテート n 回目
Copyright©2017 NTT corp. All Rights Reserved.+ 63!
test.log+
test.log.0+ test.log.1+ test.log.(n-1)+…+
ログローテート!
•  -Xlog::test.log::filecount=n	
ローテート n+1 回目
Copyright©2017 NTT corp. All Rights Reserved.+ 64!
test.log+
test.log.0+ test.log.1+ test.log.(n-1)+…+test.log.0
上書き+
ログローテート!
•  -Xlog::test.log::filecount=n	
filecount は残したい世代分設定しましょう
Copyright©2017 NTT corp. All Rights Reserved.+ 65!
test.log+
test.log.0+ test.log.1+ test.log.(n-1)+…+test.log.0
上書き+
test.log.1
上書き+
test.log.(n-1)
上書き+
GCの要確認ログの移行状況!
•  Full GC 起因となるイベント
– Evacuation Failure (G1 GC)
– promotion failed (CMS GC)
– Concurrent mode failure (CMS GC)
CMS GC は JDK 9 から非推奨化
Copyright©2017 NTT corp. All Rights Reserved.+ 66!
[info][gc]	GC(N)	To-space	exhausted	
[info][gc,	promotion]	GC(N)	Promotion	failed	
[debug][gc]	GC(N)	Concurrent	mode	failure	
ナンバリング(発生回数)+
GCの要確認ログの移行状況!
•  Stop The World を伴う GC 処理
Pause が付く
Copyright©2017 NTT corp. All Rights Reserved.+ 67!
[info][gc]	GC(N)	Pause	<種別>	(<GC	Cause>)	
	
[info][gc]	GC(1)	Pause	Young	(Allocation	Failure)	
[info][gc]	GC(2)	Pause	Full	(Allocation	Failure)	
	
#	G1	GC	
[info][gc]	GC(3)	Pause	Initial	Mark	(G1	Evacuation	Pause)	
[info][gc]	GC(3)	Pause	Remark	
[info][gc]	GC(3)	Pause	Cleanup	
	
#	CMS	GC	
[info][gc]	GC(4)	Pause	Initial	Mark	
[info][gc]	GC(4)	Pause	Remark
STW の確認方法!
-Xlog:gc*=debug,vmoperation=debug	
Copyright©2017 NTT corp. All Rights Reserved.+ 68!
[debug][vmoperation]	begin	VM_Operation	(0x0000700001c2e1c8):	
G1IncCollectionPause,	mode:	safepoint,	requested	by	thread	
0x00007fb6818df800	
[info	][gc,start			]	GC(6)	Pause	Initial	Mark	(G1	Evacuation	Pause)	
	
:(Initial	Mark の処理)	
	
[info	][gc									]	GC(6)	Pause	Initial	Mark	(G1	Evacuation	Pause)	
114M->82M(256M)	2.598ms	
[info	][gc,cpu					]	GC(6)	User=0.00s	Sys=0.00s	Real=0.01s	
[debug][vmoperation]	end	VM_Operation	(0x0000700001c2e1c8):	
G1IncCollectionPause,	mode:	safepoint,	requested	by	thread	
0x00007fb6818df800	
G1 GC の Initial Mark フェーズの例 (抜粋)+
STW 時間+ CPU
時間+
GC 以外の STW 確認方法!
•  VM_Operation で実行される
– タイムスタンプの差分(今回は0.02sec)
でSTW時間が解る
タイムスタンプの分解能以上は不可なので注意	
Copyright©2017 NTT corp. All Rights Reserved.+ 69!
[2017-05-17T23:38:35.277-0900][debug][vmoperation]		
begin	VM_Operation	(0x0000700001c2e1c8):	Deoptmize,	mode:	safepoint,	
requested	by	thread	0x00007fb6818df800	
	
:STW	を伴う処理	
	
[2017-05-12T23:38:35.279-0900][debug][vmoperation]		
end	VM_Operation	(0x0000700001c2e1c8):	Deoptmize,	mode:	safepoint,	
requested	by	thread	0x00007fb6818df800	
対応している+
ヒープ状況の確認!
•  ヒープ全体の使用量と容量
– 各 GC 方式で共通の表示
• Pause 処理終了時にヒープ全体量出力
領域ごとは出ないが概要は掴める	
Copyright©2017 NTT corp. All Rights Reserved.+ 70!
[info	][gc]	GC(6)	Pause	Initial	Mark	(G1	
Evacuation	Pause)	114M->82M(256M)	2.598ms	
処理前の
使用量+
処理後の
使用量+
容量+
ヒープ状況の確認(G1)!
•  各領域のヒープ状況
– GC 方式ごとに異なる
G1	GC の各領域毎のメモリ状況	
Copyright©2017 NTT corp. All Rights Reserved.+ 71!
E+
O
S+
O
O
S+
S+
E+
H
O
E+
O
O
E+
S+
O
O O
O
H+
O
E+
E+
O
水:Eden 橙:Survivor 緑:Old 紫:Humongous 藍:未使用+
ヒープ状況の確認(G1)!
•  各領域のヒープ状況(info)	
水:Eden 橙:Survivor 緑:Old 紫:Humongous 藍:未使用	
info	ログは単位がリージョン数で出力される	
Copyright©2017 NTT corp. All Rights Reserved.+ 72!
[info][gc,heap					]	Heap	region	size:	1M	
------------------------------------------------------------------------------------------------------------------	
:GC処理	
[info][gc,heap					]	GC(8)	Eden	regions:	1->0(68)	
[info][gc,heap					]	GC(8)	Survivor	regions:	3->4(9)	
[info][gc,heap					]	GC(8)	Old	regions:	8->8	
[info][gc,heap					]	GC(8)	Humongous	regions:	106->94	
[info][gc,metaspace]	GC(8)	Metaspace:	6823K->6823K(1056768K)	
:debug	ログ	
[info][gc										]	GC(8)	Pause	Initial	Mark	(G1	Evacuation	
Pause)	116M->105M(308M)	3.401ms	
リージョンサ
イズが異なる+
掛算してサイズ計算+
Humongousはここから引き算して概算+
ヒープ状況の確認(G1)!
•  各領域のヒープ状況(debug)+
水:Eden 橙:Survivor 緑:Old 紫:Humongous 藍:未使用+
Humongous は?	
Copyright©2017 NTT corp. All Rights Reserved.+ 73!
[debug][gc,heap	]	GC(8)	Heap	after	GC	invocations=13	(full	0):	
[debug][gc,heap	]	GC(8)		garbage-first	heap			total	315392K,	used	
107536K	[0x00000006c0000000,	0x00000006c01009a0,	0x00000007c0000000)	
[debug][gc,heap	]	GC(8)			region	size	1024K,	4	young	(4096K),	4	
survivors	(4096K)	
[debug][gc,heap	]	GC(8)		Metaspace							used	6823K,	capacity	6906K,	
committed	7040K,	reserved	1056768K	
[debug][gc,heap	]	GC(8)			class	space				used	612K,	capacity	637K,	
committed	640K,	reserved	1048576K	
リージョン数+ Eden+Survivor+
サイズ+
ヒープ状況の確認(G1)!
•  各領域のヒープ状況(debug)+
水:Eden 橙:Survivor 緑:Old 紫:Humongous 藍:未使用+
Live なものを心を籠めて全部足し算	
Copyright©2017 NTT corp. All Rights Reserved.+ 74!
[debug][gc,humongous]	GC(8)	Live	humongous	region	0	object	size	
1228816	start	0x00000006c0000000		with	remset	1	code	roots	0	is	
marked	0	reclaim	candidate	1	type	array	1	
:	
[debug][gc,humongous]	GC(8)	Live	humongous	region	106	object	size	
1884176	start	0x00000006c6a00000		with	remset	0	code	roots	0	is	
marked	0	reclaim	candidate	0	type	array	1	
[debug][gc,humongous]	GC(8)	Live	humongous	region	112	object	size	
860176	start	0x00000006c7000000		with	remset	1	code	roots	0	is	
marked	0	reclaim	candidate	1	type	array	1
ULViewer!
• 次世代 GC Viewer
– https://github.com/YaSuenag/ulviewer
タグでフィルタリング可、GC 以外も可視化
Copyright©2017 NTT corp. All Rights Reserved.+ 75!
まとめ!
• Java 9 からログが統一される
設定や出力が一新されて管理が楽に
-Xlog:何を:どこに:装飾:ローテート
• どの様に設定していくべきか?
-Xlog:all=debug から始めてフィル
タリングしていくのがお勧め
まずはログを読むのを楽しみましょう!
Copyright©2017 NTT corp. All Rights Reserved.+ 76!
Q!
Copyright©2017 NTT corp. All Rights Reserved.+ 77!
おつかれさまでした
1 of 77

Recommended

分散システムについて語らせてくれ by
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
119.5K views45 slides
実運用して分かったRabbit MQの良いところ・気をつけること #jjug by
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
24.3K views49 slides
本当は恐ろしい分散システムの話 by
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
686.3K views70 slides
JVMのGCアルゴリズムとチューニング by
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
21.7K views96 slides
トランザクションをSerializableにする4つの方法 by
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
21.9K views47 slides
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料) by
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
802 views64 slides

More Related Content

What's hot

Mavenの真実とウソ by
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソYoshitaka Kawashima
13K views67 slides
Java でつくる 低レイテンシ実装の技巧 by
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧 Ryosuke Yamazaki
10.8K views98 slides
例外設計における大罪 by
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
68.6K views37 slides
コンテナにおけるパフォーマンス調査でハマった話 by
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
2.2K views25 slides
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O... by
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
2.2K views64 slides
Metaspace by
MetaspaceMetaspace
MetaspaceYasumasa Suenaga
24.9K views56 slides

What's hot(20)

Java でつくる 低レイテンシ実装の技巧 by Ryosuke Yamazaki
Java でつくる低レイテンシ実装の技巧Java でつくる低レイテンシ実装の技巧
Java でつくる 低レイテンシ実装の技巧
Ryosuke Yamazaki10.8K views
例外設計における大罪 by Takuto Wada
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada68.6K views
コンテナにおけるパフォーマンス調査でハマった話 by Yuta Shimada
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada2.2K views
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O... by NTT DATA Technology & Innovation
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PostgreSQL 15の新機能を徹底解説 by Masahiko Sawada
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada1.5K views
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料) by NTT DATA Technology & Innovation
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
それはYAGNIか? それとも思考停止か? by Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima29.3K views
Javaはどのように動くのか~スライドでわかるJVMの仕組み by Chihiro Ito
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito67.2K views
そんなトランザクションマネージャで大丈夫か? by takezoe
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe24.6K views
containerdの概要と最近の機能 by Kohei Tokunaga
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
Kohei Tokunaga3K views
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料) by NTT DATA Technology & Innovation
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料) by NTT DATA Technology & Innovation
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Linux女子部 systemd徹底入門 by Etsuji Nakai
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai137.9K views
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ by Y Watanabe
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe17.1K views
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料) by NTT DATA Technology & Innovation
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~ by NTT DATA OSS Professional Services
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 - by onozaty
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty3.2K views

Similar to Unified JVM Logging

HeapStats: Introduction and Technical Preview by
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
2.7K views48 slides
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」 by
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」Takakiyo Tanaka
2.3K views17 slides
Prepare for Java 9 #jjug by
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
19.4K views84 slides
ななめ45°から見たJavaOne by
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
2.1K views28 slides
Introduction to GraalVM and Native Image by
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageKoichi Sakata
936 views78 slides
OpenJDK コミュニティに参加してみよう #jjug by
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
8.1K views31 slides

Similar to Unified JVM Logging(20)

HeapStats: Introduction and Technical Preview by Yuji Kubota
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota2.7K views
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」 by Takakiyo Tanaka
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
JJUGナイトセミナー OpenJDK祭り「OpenJ9+OpenJDK」
Takakiyo Tanaka2.3K views
Prepare for Java 9 #jjug by Yuji Kubota
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota19.4K views
Introduction to GraalVM and Native Image by Koichi Sakata
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata936 views
OpenJDK コミュニティに参加してみよう #jjug by Yuji Kubota
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota8.1K views
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~ by Shinji Takao
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao416 views
Javaで1から10まで書いた話(sanitized) by Tokuhiro Matsuno
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno12.4K views
PlayFramework1.x基礎編 by Asami Abe
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe1.5K views
2015 0228 OpenStack swift; GMO Internet Services by Naoto Gohko
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko3.3K views
JavaScript.Next Returns by dynamis
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returns
dynamis 7K views
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ by Ryuta Otaki
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
Ryuta Otaki5.3K views
Cell/B.E. プログラミング事始め by You&I
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
You&I574 views
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月 by VirtualTech Japan Inc.
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
明日から試せる!ソフトウエアベースストレージ「ScaleIO」のご紹介 - OpenStack最新情報セミナー 2015年9月
OSSで作るOpenStack監視システム by satsuki fukazu
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
satsuki fukazu2.7K views
RapidMinerのインストール【Ubuntu 14.04 LTS】 by Satoshi Kitajima
RapidMinerのインストール【Ubuntu 14.04 LTS】RapidMinerのインストール【Ubuntu 14.04 LTS】
RapidMinerのインストール【Ubuntu 14.04 LTS】
Satoshi Kitajima7.4K views
JBoss AS7 rev2 by nekop
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
nekop984 views
JBoss AS7 rev3 by nekop
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
nekop1.3K views
JavaScript.Next by dynamis
JavaScript.NextJavaScript.Next
JavaScript.Next
dynamis 28.8K views

More from Yuji Kubota

Head toward Java 16 (Night Seminar Edition) by
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
537 views32 slides
Head toward Java 15 and Java 16 by
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Yuji Kubota
465 views46 slides
Head toward Java 14 and Java 15 #LINE_DM by
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMYuji Kubota
102.8K views38 slides
Head toward Java 14 and Java 15 by
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Yuji Kubota
674 views35 slides
オンライン会議と音声認識 by
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識Yuji Kubota
863 views17 slides
Head toward Java 13 and Java 14 #jjug by
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugYuji Kubota
11.6K views53 slides

More from Yuji Kubota(20)

Head toward Java 16 (Night Seminar Edition) by Yuji Kubota
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota537 views
Head toward Java 15 and Java 16 by Yuji Kubota
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
Yuji Kubota465 views
Head toward Java 14 and Java 15 #LINE_DM by Yuji Kubota
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota102.8K views
Head toward Java 14 and Java 15 by Yuji Kubota
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
Yuji Kubota674 views
オンライン会議と音声認識 by Yuji Kubota
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
Yuji Kubota863 views
Head toward Java 13 and Java 14 #jjug by Yuji Kubota
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota11.6K views
Catch up Java 12 and Java 13 by Yuji Kubota
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
Yuji Kubota9.9K views
Migration Guide from Java 8 to Java 11 #jjug by Yuji Kubota
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota13.2K views
Introduction to Java 11: Support and JVM Features #jjug by Yuji Kubota
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
Yuji Kubota18.2K views
Java 10でぼくたちの生活はどう変わるの? by Yuji Kubota
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota11.3K views
Project Jigsaw #kanjava by Yuji Kubota
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji Kubota3.4K views
Java 9 and Future #jjug by Yuji Kubota
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
Yuji Kubota5.1K views
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO... by Yuji Kubota
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Yuji Kubota661 views
jcmd #javacasual by Yuji Kubota
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
Yuji Kubota16.9K views
JavaOne 2016 Java SE Feedback #jjug #j1jp by Yuji Kubota
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota5.1K views
JavaOne 2015 JDK Update (Jigsaw) #j1jp by Yuji Kubota
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota15.9K views
OpenJDK トラブルシューティング #javacasual by Yuji Kubota
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota6.4K views
HeapStats @ Seasar Conference 2015 LT by Yuji Kubota
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota3.9K views
JDK9 新機能 (日本語&ショートバージョン) #jjug by Yuji Kubota
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota26.6K views
JDK9 Features (Summary, 31/Jul/2015) #JJUG by Yuji Kubota
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota14.2K views

Recently uploaded

光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
30 views17 slides
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可 by
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
13 views22 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
29 views36 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
110 views26 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
154 views64 slides

Recently uploaded(7)

光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga30 views
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」

Unified JVM Logging