Submit Search
Upload
Metaspace
•
Download as PPTX, PDF
•
39 likes
•
25,224 views
Yasumasa Suenaga
Follow
JJUG CCC 2014 Spring資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 56
Download now
Recommended
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
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
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
Recommended
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
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
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
LogbackからLog4j 2への移行によるアプリケーションのスループット改善 ( JJUG CCC 2021 Fall )
Hironobu Isoda
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
まべ☆てっく運営
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
Jvm internal
Jvm internal
Go Tanaka
ClassLoader Leak Patterns
ClassLoader Leak Patterns
nekop
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Yasumasa Suenaga
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
More Related Content
What's hot
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
まべ☆てっく運営
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
Jvm internal
Jvm internal
Go Tanaka
ClassLoader Leak Patterns
ClassLoader Leak Patterns
nekop
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Yasumasa Suenaga
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Java仮想マシンの実装技術
Java仮想マシンの実装技術
Kiyokuni Kawachiya
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
What's hot
(20)
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Jvm internal
Jvm internal
ClassLoader Leak Patterns
ClassLoader Leak Patterns
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Java 9で進化する診断ツール
Java 9で進化する診断ツール
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Java仮想マシンの実装技術
Java仮想マシンの実装技術
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Similar to Metaspace
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
Insight Technology, Inc.
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
Apache Torqueについて
Apache Torqueについて
tako pons
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
LINEのMySQL運用について
LINEのMySQL運用について
LINE Corporation
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
SORACOM, INC
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
NVIDIA Japan
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
R5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
Kohei KaiGai
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
Similar to Metaspace
(20)
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
[db tech showcase Tokyo 2018] #dbts2018 #D34 『サポートのトップエンジニアが語る - ワンランク上のStats...
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Apache Torqueについて
Apache Torqueについて
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
LINEのMySQL運用について
LINEのMySQL運用について
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
R5 3 type annotation
R5 3 type annotation
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
GPUとSSDがPostgreSQLを加速する~クエリ処理スループット10GB/sへの挑戦~ [DB Tech Showcase Tokyo/2017]
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
More from Yasumasa Suenaga
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Yasumasa Suenaga
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
Yasumasa Suenaga
HotSpotコトハジメ
HotSpotコトハジメ
Yasumasa Suenaga
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
Serviceability Toolsの裏側
Serviceability Toolsの裏側
Yasumasa Suenaga
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
More from Yasumasa Suenaga
(8)
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
HotSpotコトハジメ
HotSpotコトハジメ
Heap statsfx analyzer
Heap statsfx analyzer
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Serviceability Toolsの裏側
Serviceability Toolsの裏側
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Recently uploaded
(8)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
Metaspace
1.
末永 恭正 @YaSuenag #ccc_r25
2.
おことわり この資料は2014/05/17時点の JDK8u/jdk8u-dev/hotspot(changeset 382a82b0a3e7:jdk8u20-b14)の内容を 基に記載しています。 OracleとJavaは、Oracle Corporation及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。
3.
自己紹介 末永 恭正(すえなが
やすまさ) @YaSuenag 某SIerでJavaやってるサンデープログラマー OpenJDK Author(jdk9) IcedTea Committer HeapStats作ってます http://icedtea.classpath.org/wiki/HeapStats/jp
4.
5.
Metaspace Permanent世代の代わりに導入されたメタ データ管理の仕組み JEP
122: Remove the Permanent Generation http://openjdk.java.net/jeps/122 “HotRockit”の一環 Perm世代をネイティブ メモリに追い出す
6.
扱うデータ JVM実装でMetaspaceObjクラスを継承して いるものがMetaspaceで扱われる ClassType ○
純粋なクラス情報 NonClassType ○ ClassType以外の情報 ○ シンボル情報やメソッドの最適化に必要な情報など
7.
MetaspaceObjの一覧
8.
Metaspaceの種類 StandardMetaspaceType 通常のMetaspace BootMetaspaceType ブートストラップクラスローダ 専用 ROMetaspaceType
クラス情報ダンプ時に使用され るMetaspace (-XX:+DumpSharedSpaces) ReadWriteMetaspaceType AnonymousMetaspaceType 匿名クラス専用 (InvokeDynamic) ReflectionMetaspaceType defineClass専用 (リフレクションなどの動的定義クラス)
9.
10.
11.
ClassLoaderとVirtualSpace Class Loader 仮想メモリ空間VirtualSpaceList VirtualSpace VirtualSpace : VirtualSpace VirtualSpace : Class Loader メタデータ用の バラバラの空間を 仮想的に1つに =Metaspace VirtualSpace Compressed ClassSpace !?
12.
CompressedClassSpace 圧縮Oopが利用可能な状況でのみ使用できる、 クラス情報に特化したメモリ空間 UseCompressedOopsが有効であることが必須 ○
最大Javaヒープサイズが32GB以下であること UseCompressedClassPointersでコントロー ル可能
13.
圧縮Oop? LP64向けHotSpotでのみ利用可能なメモリ使 用量削減の仕組み 64bitポインタを、ベースアドレスからのオフ セットを用いてムリヤリ32bitで表現
14.
どういうこと? LP64のメモリアライメントは8byte ObjectAlignmentInBytesでコントロール ○
デフォルト:8 つまり、下位3bitはゼロで埋められている 3bit右シフトしても情報欠損が起きない! JavaヒープやCompressedClassSpaceは連続 空間 そこの上にアロケートされるメモリは、すべて開始 アドレスからのオフセットで表現可能!
15.
プログラム的に表すと… http://www.oracle.com/technetwork/jp/articles/java/compressedoops-427542-ja.html 圧縮Oop(narrowOop)は符号なし32bitで表現されるので uint_max(4GB)<< 3 =
4GB×23 = 32GB 圧縮できる上限
16.
17.
Metaspaceの成長 = VirtualSpaceListの成長 =VirtualSpaceの追加 成長度合い
チャンクサイズで決まります
18.
Metaspaceとチャンクサイズ
19.
チャンクサイズはイジれません … HotSpotの1ワード:LP64なら8バイト、それ以外なら4バイト 対数(log)です
20.
ここまでのまとめ Metaspaceは1クラスローダにつき1つ割り当 てられる Metaspaceは連続したメモリ空間ではない
Metaspaceで扱われる情報は大きく2種類 クラス情報 それ以外 Metaspaceには6つの種類が存在する LP64環境でJavaヒープサイズが32GB以下の 場合はCompressedClassSpaceが作られる
21.
22.
Metaspaceでも OutOfMemoryErrorは起きます!
23.
実証コード import java.nio.file.*; import java.util.jar.*; public
class MetaFlood{ public static void main(String[] args) throws Exception{ Path rtjar_path = FileSystems.getDefault().getPath( System.getProperty("java.home"), "lib", "rt.jar"); try(JarFile rtjar = new JarFile(rtjar_path.toFile())){ rtjar.stream().filter(e -> !e.isDirectory()) .map(e -> e.getName()) .filter(n -> n.endsWith(".class")) .map(n -> n.substring(0, n.length() - 6).replace('/', '.')) .forEach(n -> { System.out.println(n); try{ ClassLoader.getSystemClassLoader().loadClass(n); } catch(ClassNotFoundException ex){} catch(OutOfMemoryError oome){ System.out.println(oome.toString()); throw oome; } }); } } }
24.
OOMEを起こしてみる $ /usr/local/jdk1.8.0_05/bin/java -XX:CompressedClassSpaceSize=1m
MetaFlood : java.lang.OutOfMemoryError: Compressed class space Exception in thread "main“ : $ /usr/local/jdk1.8.0_05/bin/java -XX:-UseCompressedClassPointers -XX:MaxMetaspaceSize=5m MetaFlood : java.lang.OutOfMemoryError: Metaspace Exception in thread "main“ : その1:CompressedClassSpace溢れ その2:Metaspace溢れ
25.
26.
Permanentとの違い MetaspaceがGCされることはありません クラスローダが破棄されると、関連する Metaspaceが削除されます
FullGC後にMetaspace容量の調整を行います 拡張 or 削減 ここでは閾値の変更のみを行い、実際のメモリ伸 縮は行いません
27.
MetaspaceGC
28.
Metaspace起因のGCが起こるま で 1. Metaspaceからメモリを取ろうとする i. 今あるメモリから取ろうとする ii.
Metaspaceを拡張して取ろうとする 2. GCを起こす i. 使われていないクラスローダをGCで回収し、 できるだけ空きMetaspaceを増やす ii. Metaspaceを拡張して取ろうとする ~通常はここまででMetaspaceがとれる~ →OutOfMemoryError
29.
GCログの例 [Full GC (Metadata
GC Threshold) [PSYoungGen: 496K->0K(2560K)] [ParOldGen: 388K->836K(6656K)] 884K->836K(9216K), [Metaspace: 7292K->7292K(9216K)], 0.0123187 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] [Full GC (Last ditch collection) [PSYoungGen: 0K->0K(2560K)] [ParOldGen: 836K->792K(6656K)] 836K->792K(9216K), [Metaspace: 7292K->7292K(9216K)], 0.0134180 secs] [Times: user=0.04 sys=0.00, real=0.02 secs] ※見やすく改行しています Metaspaceが 足りなくて GCが発生 GCしても まだ足りないため 最後の悪あがき
30.
「最後の悪あがき」とは? ソフト参照も回収対象にし、できる限りクラス ローダを回収しようとします
31.
32.
5つの手段 1. ツール jstat
jcmd jconsole VisualVM 2. JMX 3. GCログ 4. NMT 5. HeapStats
33.
jstat -gcなどが使えます(単位は全部KB) MC:Metaspace
Capacity MU:Metaspace Used CCSC: Compressed Class Space Capacity CCSU: Compressed Class Space Used -gcmetacapacityというオプションもあります メタスペースサイズとGC回数・時間の取得用 $ /usr/local/jdk1.8.0_05/bin/jstat -gc 7831 … MC MU CCSC CCSU … … 4864.0 2377.7 512.0 258.0 …
34.
jcmd PerfCounter.printで細かく見れます sun.gc.metaspace
sun.gc.compressedclassspace $ /usr/local/jdk1.8.0_05/bin/jcmd 7831 PerfCounter.print : sun.gc.compressedclassspace.capacity=524288 sun.gc.compressedclassspace.maxCapacity=1073741824 sun.gc.compressedclassspace.minCapacity=0 sun.gc.compressedclassspace.used=264208 : sun.gc.metaspace.capacity=4980736 sun.gc.metaspace.maxCapacity=1082130432 sun.gc.metaspace.minCapacity=0 sun.gc.metaspace.used=2434808 :
35.
jconsole 各メモリプールから確認できます
36.
VisualVM Metaspace全体の確認ができます
37.
JMX 各メモリプールがあります
38.
GCログ PermだったところがMetaspaceに変わって います $ /usr/local/jdk1.8.0_05/bin/java
-XX:+PrintGCDetails SystemGC : [Full GC (System.gc()) [PSYoungGen: 368K->0K(1024K)] [ParOldGen: 8K->251K(59904K)] 376K->251K(60928K), [Metaspace: 2377K->2377K(1056768K)], 0.0047055 secs] [Times: user=0.01 sys=0.00, real=0.00 secs] : ※見やすく改行しています
39.
Native Memory Tracking
(NMT) 細かい情報を簡単に知りたいときに最適 -XX:NativeMemoryTracking=[summary|detail] 取り方は2種類 -XX:+UnlockDiagnosticVMOptions と -XX:+PrintNMTStatistics でjava終了時に取得 jcmd <PID> VM.native_memoryで外側から取得 Metaspaceは”Class”の部分です
40.
jcmd VM.native_memory $ /usr/local/jdk1.8.0_05/bin/jcmd
8858 VM.native_memory 8858: Native Memory Tracking: Total: reserved=2330153KB, committed=135365KB : - Class (reserved=1062006KB, committed=10102KB) (classes #374) (malloc=5238KB, #153) (mmap: reserved=1056768KB, committed=4864KB) : インスタンス クラス数
41.
HeapStats 1.1系を使ってください 閾値監視(SNMP
Trap送信)もできます ココ
42.
注意 Metaspaceの値はCompressedClassSpaceの 値も含む、全体的な値です。 CompressedClassSpace⊆Metaspace
NonClassTypeなMetaspaceを見たい場合は、 MetaspaceからCompressedClassSpace分を 引いてください。
43.
44.
Metaspace関連オプション(- XX)オプション 意味 デフォルト MinMetaspaceExpansion
Metaspaceの最小拡張単 位 256KB MinMetaspaceFreeRatio GC後の最小フリー量の パーセンテージ 40 MaxMetaspaceFreeRatio GC後の最大フリー量の パーセンテージ 70 MaxMetaspaceExpansion Metaspaceの最大拡張単 位 4MB
45.
Metaspace関連オプション(- XX)オプション 意味 デフォルト UseLargePagesInMetaspace
Metaspaceにラージペー ジを使うか? (UseLargePages必須) false TraceMetadataHumongousAllocation 大きなオブジェクトを Metaspaceにアロケート するのをトレースする false InitialBootClassLoaderMetaspaceSize ブートクラスローダ用 Metaspaceの初期値 LP64:4MB それ以外: 2200KB MetaspaceSize Metaspaceをリサイズさ せるための閾値 環境依存 MaxMetaspaceSize 最大Metaspaceサイズ unsigned long 最大値 CompressedClassSpaceSize CompressedClassSpace のサイズ 1GB
46.
-XX:MetaspaceSizeでは Metaspaceの初期サイズを 指定できません!
47.
hotspot-gc-devに質問してみた http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2014-April/009853.html JIRAにも登録しました: JDK-8039867: Incorrect description:
-XX:MetaspaceSize https://bugs.openjdk.java.net/browse/JDK-8039867
48.
49.
オプションをつける前に… Metaspaceは連続空間ではない 1クラスローダ1メタスペース
ブートストラップ以外のクラスローダの初期サイズは 変更できない ○ InitialBootClassLoaderMetaspaceSize(デフォルト4MB) CompressedClassSpaceはクラス情報「だけ」 シンボルやメソッドプロファイル情報などは別領域 長時間動作させていれば、Metaspace使用量はあ る程度安定してくる(はず) 動的ロードをガンガン行う場合はワカラナイ…
50.
一番注意すべきオプション CompressedClassSpaceSize JDK7u55: VmSize: 2153520 kB JDK8u5: VmSize:
3390320 kB 約1GBの差! オプションを何もつけずに起動したときの仮想 メモリ使用量(VSZ)
51.
なぜ1GBも差が? AMD64なJDK7ではMaxPermSizeの初期値が 64MB(jdk7u-devのHotSpotの場合) Perm目的で64MBしかリザーブしない ○
MaxPermSizeはプラットフォームやHotSpot VMの種 類によりデフォルト値が異なります CompressedClassSpaceのデフォルトは1GB 1GBリザーブしてしまう!! デフォルトのまま使うときは オーバーコミットに注意しましょう!
52.
MaxMetaspaceSize 青天井! OSに殺されるかも…
53.
古の情報 http://hg.openjdk.java.net/hsx/hotspot-rt/hotspot/diff/740e263c80c6/src/share/vm/runtime/arguments.cpp#l1.83 昔は1クラス情報=1KBとみなしていました CompressedClassSpaceをデフォルトで100MBに
昔はClassMetaspaceSizeというオプションでした 100,000クラスはロードできるよ!という話
54.
1クラスあたりの占有サイズ フィールド数、メソッド数によって異なります 一概に「だいたいxxバイト」と表現できません 実測一番!
55.
と、いうわけで… -XX:MaxMetaspaceSize=そこそこ -XX:CompressedClassSpaceSize=100m ※責任はもちません -XX:MaxMetaspaceSize=そこそこ ①-Xmx32g以下の場合 ②-Xmx32g超えの場合 ③もう何も気にしたくない場合 -XX:-UseCompressedClassPointers
Download now