Submit Search
Upload
Metaspace
•
Download as PPTX, PDF
•
39 likes
•
25,236 views
Yasumasa Suenaga
Follow
JJUG CCC 2014 Spring資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 56
Download now
Recommended
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
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Yuji Kubota
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Recommended
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
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Vacuum徹底解説
Vacuum徹底解説
Masahiko Sawada
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Yuji Kubota
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
Jvm internal
Jvm internal
Go Tanaka
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
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
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Native Memory Tracking
Native Memory Tracking
Takahiro YAMADA
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
Yoshiro Tokumasu
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
More Related Content
What's hot
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
Jvm internal
Jvm internal
Go Tanaka
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
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
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Native Memory Tracking
Native Memory Tracking
Takahiro YAMADA
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
Yoshiro Tokumasu
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
NTT DATA Technology & Innovation
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
What's hot
(20)
Unified JVM Logging
Unified JVM Logging
Jvm internal
Jvm internal
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Native Memory Tracking
Native Memory Tracking
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
PostgreSQLアンチパターン
PostgreSQLアンチパターン
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
その Pod 突然落ちても大丈夫ですか!?(OCHaCafe5 #5 実験!カオスエンジニアリング 発表資料)
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
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
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
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
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マイスターシリーズ
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
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監視を考える
More from Yasumasa Suenaga
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Yasumasa Suenaga
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
Yasumasa Suenaga
Java 9で進化する診断ツール
Java 9で進化する診断ツール
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
(9)
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
Java 9で進化する診断ツール
Java 9で進化する診断ツール
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
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Recently uploaded
(11)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
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