SlideShare a Scribd company logo
Copyright(c)2014 NTT Corp. All Rights Reserved. 0
渋谷Java
Copyright(c)2014 NTT Corp. All Rights Reserved. 1
Copyright(c)2014 NTT Corp. All Rights Reserved. 2
Copyright(c)2014 NTT Corp. All Rights Reserved. 3
Copyright(c)2014 NTT Corp. All Rights Reserved. 4
Copyright(c)2014 NTT Corp. All Rights Reserved.
Metaspace
Java heapPermanentnative
Thread
Stack
-Xmx-XX:MaxPermSize
OS
-XX:MaxMetaspaceSize
-Xss*threads
Compressed Class
Space
-XX:CompressedClassSpaceSize
JDK7以前
※注:この図は解りやすくするために一部嘘をついています。
例:Metaspaceは不連続。Permanent は一部 heap にも移動した。
ThreadStack は 1スレッド辺り Xss + guard page サイズ, 等。
5
OS管理 JVM管理 JVM,JNIコード
データセグメント等
JDK8
Copyright(c)2014 NTT Corp. All Rights Reserved.
java.lang.OutOfMemoryError: Java heap space
6
Copyright(c)2014 NTT Corp. All Rights Reserved. 7
Copyright(c)2014 NTT Corp. All Rights Reserved. 8
heap
non-heap
native
それ以外
Copyright(c)2014 NTT Corp. All Rights Reserved.
次ページ以降のスライドの読み方
9
Copyright(c)2014 NTT Corp. All Rights Reserved. 10
Native
Metaspace
Java heapPermanentnative
Thread
Stack
-Xmx-XX:MaxPermSize
OS
-Xss*threads
Compressed Class
Space
JDK7以前
JDK8
-XX:MaxMetaspaceSize-XX:CompressedClassSpaceSize
Copyright(c)2014 NTT Corp. All Rights Reserved. 11
※:読み書き権限やファイルマップ有無などの属性が同
じで仮想アドレスが連続する仮想メモリのこと。
Copyright(c)2014 NTT Corp. All Rights Reserved. 12
Copyright(c)2014 NTT Corp. All Rights Reserved. 13
Metaspace
Java heapPermanentnative
Thread
Stack
-Xmx-XX:MaxPermSize
OS
-Xss*threads
Compressed Class
Space
JDK7以前
JDK8
heap + non-heap
-XX:MaxMetaspaceSize-XX:CompressedClassSpaceSize
Copyright(c)2014 NTT Corp. All Rights Reserved. 14
Copyright(c)2014 NTT Corp. All Rights Reserved. 15
Copyright(c)2014 NTT Corp. All Rights Reserved. 16
Metaspace
Java heapPermanentnative
Thread
Stack
-Xmx-XX:MaxPermSize
OS
-Xss*threads
Compressed Class
Space
JDK7以前
JDK8
non-heap
-XX:MaxMetaspaceSize-XX:CompressedClassSpaceSize
Copyright(c)2014 NTT Corp. All Rights Reserved. 17
Copyright(c)2014 NTT Corp. All Rights Reserved. 18
Copyright(c)2014 NTT Corp. All Rights Reserved. 19
Metaspace
Java heapPermanentnative
Thread
Stack
-Xmx-XX:MaxPermSize
OS
-Xss*threads
Compressed Class
Space
JDK7以前
JDK8
heap
-XX:MaxMetaspaceSize-XX:CompressedClassSpaceSize
Copyright(c)2014 NTT Corp. All Rights Reserved. 20
Copyright(c)2014 NTT Corp. All Rights Reserved. 21
Copyright(c)2014 NTT Corp. All Rights Reserved. 22
Copyright(c)2014 NTT Corp. All Rights Reserved. 23
定期的に取得して heapstats_log.csv に保存される。
デモの様子
Copyright(c)2014 NTT Corp. All Rights Reserved. 24
FullGC ごとに取得して heapstats_snapshot.dat に
保存される。PermGenも同様に表示可能です。
デモの様子
Copyright(c)2014 NTT Corp. All Rights Reserved. 25
FullGC ごとに取得して heapstats_snapshot.dat に
保存される。GC 時間も合わせて表示されます。
このままだとリークの根本原因は不明のまま。
デモの様子
Copyright(c)2014 NTT Corp. All Rights Reserved. 26
各クラスごとのサイズも時系列で表示される。これを
見ると青色([B)のクラスが明らかにリークしている。
デモの様子
Copyright(c)2014 NTT Corp. All Rights Reserved. 27
クラスの参照関係をサイズ順に確認できる。リーク原
因と思わしき[B(バイト配列) は Airクラス等と参照関係
があるので, これらのクラスで作成されている可能性
がある。サードパーティ製を含めて調査範囲を絞れる
デモの様子
Copyright(c)2014 NTT Corp. All Rights Reserved. 28
それ以外
Copyright(c)2014 NTT Corp. All Rights Reserved. 29
Copyright(c)2014 NTT Corp. All Rights Reserved. 30
Copyright(c)2014 NTT Corp. All Rights Reserved. 31
Question?

More Related Content

PDF
Unified JVM Logging
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
KubernetesでRedisを使うときの選択肢
PPTX
Metaspace
PDF
JVMのGCアルゴリズムとチューニング
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Unified JVM Logging
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
KubernetesでRedisを使うときの選択肢
Metaspace
JVMのGCアルゴリズムとチューニング
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)

What's hot (20)

PPTX
iostat await svctm の 見かた、考え方
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
Apache Kafka 0.11 の Exactly Once Semantics
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
PPTX
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
PDF
コンテナにおけるパフォーマンス調査でハマった話
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
PPTX
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
PDF
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
PDF
マルチテナント化で知っておきたいデータベースのこと
PPTX
Amazon EKS への道 ~ EKS 再入門 ~
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
分散トレーシング技術について(Open tracingやjaeger)
iostat await svctm の 見かた、考え方
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
コンテナ未経験新人が学ぶコンテナ技術入門
アーキテクチャから理解するPostgreSQLのレプリケーション
コンテナの作り方「Dockerは裏方で何をしているのか?」
Apache Kafka 0.11 の Exactly Once Semantics
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Javaはどのように動くのか~スライドでわかるJVMの仕組み
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
コンテナにおけるパフォーマンス調査でハマった話
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
マルチテナント化で知っておきたいデータベースのこと
Amazon EKS への道 ~ EKS 再入門 ~
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
分散トレーシング技術について(Open tracingやjaeger)
Ad

Viewers also liked (20)

PDF
楽して JVM を学びたい #jjug
PDF
JVM のいろはにほ #javajo
PDF
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
PDF
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
PDF
GCが止まらない
PPTX
GCについて
PPTX
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
PDF
エスイーのしごと
PDF
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
PPTX
やっとわかったタイピングスピード向上のコツ
PDF
エスイーが要件定義でやるべきたったひとつのこと
PPTX
良いコードとは
PDF
たとえ日本人同士でも必要な異文化理解力
PPTX
JVM言語を使ってみようの歌
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
PPTX
Java でつくる 低レイテンシ実装の技巧
PDF
Graph Algorithms Part 1
PDF
言語設計者が意味論を書くときに考えていたこと
PPTX
高速なソートアルゴリズムを書こう!!
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
楽して JVM を学びたい #jjug
JVM のいろはにほ #javajo
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
GCが止まらない
GCについて
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
エスイーのしごと
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
やっとわかったタイピングスピード向上のコツ
エスイーが要件定義でやるべきたったひとつのこと
良いコードとは
たとえ日本人同士でも必要な異文化理解力
JVM言語を使ってみようの歌
JDK9 新機能 (日本語&ショートバージョン) #jjug
Java でつくる 低レイテンシ実装の技巧
Graph Algorithms Part 1
言語設計者が意味論を書くときに考えていたこと
高速なソートアルゴリズムを書こう!!
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
Ad

Similar to java.lang.OutOfMemoryError #渋谷java (20)

PPT
Javaメモリ勉強会
PPT
Javaでトランザクショナルメモリを使う
PDF
Java8から17へ
PPTX
ななめ45°から見たJavaOne
PPTX
JSX 速さの秘密 - 高速なJavaScriptを書く方法
PPTX
JSX の現在と未来 - Oct 26 2013
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
PDF
JavaScript.Next
PPTX
Dbts 分散olt pv2
PDF
JavaScript.Next Returns
PDF
LXC入門 - Osc2011 nagoya
PDF
20101029 open cloudcampus-1
PDF
いまさら聞けない!CUDA高速化入門
PDF
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
PDF
ATN No.2 Scala事始め
PDF
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
PDF
WakameTech #3
PDF
Guide to Cassandra for Production Deployments
PDF
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
PDF
OpenStack ComputingはHyper-Convergedの夢を見るのか?
Javaメモリ勉強会
Javaでトランザクショナルメモリを使う
Java8から17へ
ななめ45°から見たJavaOne
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX の現在と未来 - Oct 26 2013
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
JavaScript.Next
Dbts 分散olt pv2
JavaScript.Next Returns
LXC入門 - Osc2011 nagoya
20101029 open cloudcampus-1
いまさら聞けない!CUDA高速化入門
[INSIGHT OUT 2011] B32 open hardwareの夜明け pci express 3・infiniband fdrの登場(yama...
ATN No.2 Scala事始め
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
WakameTech #3
Guide to Cassandra for Production Deployments
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
OpenStack ComputingはHyper-Convergedの夢を見るのか?

More from Yuji Kubota (20)

PDF
Head toward Java 16 (Night Seminar Edition)
PDF
Head toward Java 15 and Java 16
PDF
Head toward Java 14 and Java 15 #LINE_DM
PDF
Head toward Java 14 and Java 15
PDF
オンライン会議と音声認識
PDF
Head toward Java 13 and Java 14 #jjug
PDF
Catch up Java 12 and Java 13
PDF
Migration Guide from Java 8 to Java 11 #jjug
PDF
Introduction to Java 11: Support and JVM Features #jjug
PDF
Java 10でぼくたちの生活はどう変わるの?
PPTX
Project Jigsaw #kanjava
PPTX
Java 9 and Future #jjug
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
PDF
Prepare for Java 9 #jjug
PDF
jcmd #javacasual
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
PDF
OpenJDK コミュニティに参加してみよう #jjug
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
OpenJDK トラブルシューティング #javacasual
PDF
HeapStats @ Seasar Conference 2015 LT
Head toward Java 16 (Night Seminar Edition)
Head toward Java 15 and Java 16
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15
オンライン会議と音声認識
Head toward Java 13 and Java 14 #jjug
Catch up Java 12 and Java 13
Migration Guide from Java 8 to Java 11 #jjug
Introduction to Java 11: Support and JVM Features #jjug
Java 10でぼくたちの生活はどう変わるの?
Project Jigsaw #kanjava
Java 9 and Future #jjug
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Prepare for Java 9 #jjug
jcmd #javacasual
JavaOne 2016 Java SE Feedback #jjug #j1jp
OpenJDK コミュニティに参加してみよう #jjug
JavaOne 2015 JDK Update (Jigsaw) #j1jp
OpenJDK トラブルシューティング #javacasual
HeapStats @ Seasar Conference 2015 LT

java.lang.OutOfMemoryError #渋谷java

Editor's Notes