SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
末永 恭正 @YaSuenag
•
•
•
•
•
http://icedtea.classpath.org/wiki/HeapStats/jp
•
•
•
•
[Full GC (System.gc())
[PSYoungGen: 320K->0K(38400K)]
[ParOldGen: 8K->258K(87552K)] 328K->258K(125952K),
[Metaspace: 2485K->2485K(1056768K)],
0.0201510 secs]
※ログは見やすく改行しています
System::gc?
jcmdでGC.run?
どっちだ!?
[9.693s][info][gc]
GC(0) Pause Full (Diagnostic Command)
1M->0M(8M) 7.314ms
※ログは見やすく改行しています
[9.693s][info][gc]
GC(0) Pause Full (System.gc())
1M->0M(8M) 7.314ms
一目瞭然!
JDK-8068589: GCCause should distinguish jcmd GC.run from System.gc()
•
• JDK-8072693:
[BACKOUT] GCCause should distinguish jcmd GC.run from System.gc()
ログ出力メッセージの変化を
テストケースに反映するの忘れてた…
• JDK-8072913:
[REDO] GCCause should distinguish jcmd GC.run from System.gc()
•
•
http://openjdk.java.net/jeps/248
•
•
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 0.00 0.29 51.11 52.08 7 0.030 7 0.052 0.081
• ホントのFull GC
• G1のSTWフェーズ(Remark / Cleanup) どっち!?
http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2016-March/016774.html
それだけでは終わらなかった…
https://bugs.openjdk.java.net/browse/JDK-8153302
Backouted
JDK-8153333: [REDO] STW phases at Concurrent GC should count in PerfCounter
※2年がかり
ネガティブな出来事
•
•
ポジティブな出来事
•
• Submit Repo
•
• JEP 296
• https://hg.openjdk.java.net/jdk/submit/
•
http://mail.openjdk.java.net/pipermail/jdk-dev/2018-March/000897.html
“We do no longer require an Oracle sponsor
to push changes to HotSpot.”
•
•
•
https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#JDK-8153333
•
• コンカレントGCの
• コンカレントGCの
•
• JDK-8207756: ZGC: jstat should show CGC STW phases
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT
0.00 0.00 0.00 48.87 96.28 87.33 28 0.204 1 0.110 6 0.014 0.327
•
•
•
https://www.slideshare.net/YaSuenag/java-9-62345544/16
PerfCounterで
GCのSTWを見分けたかった
•
•
https://www.slideshare.net/YaSuenag/serviceability-tools/14
•
•
•
• ???
•
•
•
•
• https://github.com/YaSuenag/garakuta/tree/master/NativeStackOverflow
https://www.slideshare.net/YaSuenag/java-9-62345544/55 ※少し加工しています
※Java Day Tokyo 2016でお話しさせてもらいました
$ jhsdb jsnap
•
•
Java Day Tokyo 2016でも
お話させてもらいました
https://www.slideshare.net/YaSuenag/java-9-62345544/57
•
•
hs_err
GC回数とメモリ量
jsnap
詳細な挙動を保持
tickはfreqで割れば秒に!
hs_errログのGCイベント jsnap
40回のGC(うち6回はFull GC) 43回のGC(32+6+5)
•
•
hs_errログのGCイベントの場合(GC開発MLで教えてもらいました)
コアイメージを
もらうところから始まる!
クラッシュした~
コアちょうだい
それ、どこよ??
•
•
•
•
•
Hackergarten
@
JavaOne
•
•
•
•
https://community.oracle.com/docs/DOC-1026550
•
•
•
http://mail.openjdk.java.net/pipermail/hotspot-dev/2014-October/015459.html
“I'm in Hackergarten @ JavaOne :-)”
• JDK-8059586:
hs_err report should treat redirected core pattern.
•
thisオブジェクト、何?
Thread 77506: (state = IN_NATIVE)
- NativeSEGV.doSEGV() @bci=0 (Interpreted frame)
- NativeCaller.callNative() @bci=0, line=26 (Interpreted frame)
- NativeSEGV.main(java.lang.String[]) @bci=11, line=12 (Interpreted frame)
このインスタンスの状態は?
OOPアドレスが見える!
JDK-8144965: Show oop pointer in call frame at HSDB.
O O P
•
•
•
•
•
関連するオブジェクトの
状態を確認できる!
•
•
•
• https://github.com/YaSuenag/garakuta/tree/master/oop
S A
•
•
• http://hg.openjdk.java.net/zgc/zgc/rev/8609ea491452
Class Unloading
https://bugs.openjdk.java.net/browse/JDK-8214897
https://bugs.openjdk.java.net/browse/JDK-8207843
SAのクラスヒストグラム
•
•
ZGCのクラスアンロード
•
•
&
生 生 死 生 死 死 生 生 生 死
クラスがアンロードされていると
オブジェクトサイズがわからない!
とあるZPage内の
オブジェクト
連続空間にしにくい
http://cr.openjdk.java.net/~ysuenaga/JDK-8207843/webrev.00/
※アンロードを考慮してない、拒否られたパッチ
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java
•
•
•
•
•
•
•
•
• jcmdも応答しない完全ハング状態でも大丈夫!
• クラッシュしても大丈夫!
JDK付属ツールにパッチを出しまくったワケ

Contenu connexe

Tendances

Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Ryosuke Uchitate
 

Tendances (20)

Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
Azure サポート チームの現場からお届けする落ちないサービスのために
Azure サポート チームの現場からお届けする落ちないサービスのためにAzure サポート チームの現場からお届けする落ちないサービスのために
Azure サポート チームの現場からお届けする落ちないサービスのために
 
Helidon 概要
Helidon 概要Helidon 概要
Helidon 概要
 
CloudFoundryをつかってみよう
CloudFoundryをつかってみようCloudFoundryをつかってみよう
CloudFoundryをつかってみよう
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Istioサービスメッシュ入門
Istioサービスメッシュ入門Istioサービスメッシュ入門
Istioサービスメッシュ入門
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について
 
マルチクラウド環境のデータ保護の現実解(AWS,Azure,GCP-Veritas NetBackup CloudPoint)
マルチクラウド環境のデータ保護の現実解(AWS,Azure,GCP-Veritas NetBackup CloudPoint)マルチクラウド環境のデータ保護の現実解(AWS,Azure,GCP-Veritas NetBackup CloudPoint)
マルチクラウド環境のデータ保護の現実解(AWS,Azure,GCP-Veritas NetBackup CloudPoint)
 
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
[MeetUp][3rd] 아무도 이야기하지 않는 클라우드 3사 솔직 비교
 
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsugSpring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
 
[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf[GitOps] Argo CD on GKE (v0.9.2).pdf
[GitOps] Argo CD on GKE (v0.9.2).pdf
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
 
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロAzure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロ
 
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
 
Kuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOpsKuberneteの運用を支えるGitOps
Kuberneteの運用を支えるGitOps
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 

Similaire à JDK付属ツールにパッチを出しまくったワケ

Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
Ryo Sakamoto
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
 
Zabbixでvmc statsの情報など監視
Zabbixでvmc statsの情報など監視Zabbixでvmc statsの情報など監視
Zabbixでvmc statsの情報など監視
Shota Onishi
 
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
tama200x Kobayashi
 

Similaire à JDK付属ツールにパッチを出しまくったワケ (20)

負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
 
CPUから見たG1GC
CPUから見たG1GCCPUから見たG1GC
CPUから見たG1GC
 
Versatil Javaチューニング
Versatil JavaチューニングVersatil Javaチューニング
Versatil Javaチューニング
 
20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部20190625 OpenACC 講習会 第3部
20190625 OpenACC 講習会 第3部
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018
 
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
 
Metaspace
MetaspaceMetaspace
Metaspace
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Zabbixでvmc statsの情報など監視
Zabbixでvmc statsの情報など監視Zabbixでvmc statsの情報など監視
Zabbixでvmc statsの情報など監視
 
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
2012/8/26 サーバを引っ越す+ドメイン管理会社(レジストラ)を変える@【第四回】初心者向けホームページ勉強会
 

Plus de Yasumasa Suenaga (8)

Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
HotSpotコトハジメ
HotSpotコトハジメHotSpotコトハジメ
HotSpotコトハジメ
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
 

Dernier

Dernier (7)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

JDK付属ツールにパッチを出しまくったワケ