Submit Search
Upload
Metaspace
•
Download as PPTX, PDF
•
39 likes
•
25,237 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
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
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...
NTT DATA Technology & Innovation
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
Recommended
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
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...
NTT DATA Technology & Innovation
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
Ryosuke Yamazaki
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
まべ☆てっく運営
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Hirofumi Iwasaki
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
More Related Content
What's hot
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Hironobu Isoda
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
Ryosuke Yamazaki
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
まべ☆てっく運営
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Hirofumi Iwasaki
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Serverless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
What's hot
(20)
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Java でつくる低レイテンシ実装の技巧
Java でつくる低レイテンシ実装の技巧
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
負荷テストを行う際に知っておきたいこと 初心者編
負荷テストを行う際に知っておきたいこと 初心者編
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
Serverless時代のJavaについて
Serverless時代のJavaについて
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
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
コンテナ環境で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
R5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
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イメージを小さくする方法!
これからの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監視を考える
R5 3 type annotation
R5 3 type annotation
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
論文紹介: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.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Recently uploaded
(10)
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
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