Quality Outreach Heads-up – Separate Metaspace and GC Printing

原文はこちら。
The original article was written by Billy Korando (Developer Advocate at Oracle).
https://inside.java/2025/06/09/quality-heads-up/

OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDKビルドを使ってのFOSSプロジェクトのテストを推進しています。

Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach

このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。このプログラムの詳細と参加方法については、上記wikiをご覧ください。

The quality-discuss Archives
https://mail.openjdk.org/pipermail/quality-discuss/

Separate Metaspace and GC Printing

これまで、MetaspaceとGCログの出力は結合されていました。これは、GCヒープの一部としてパーマネント領域(permanent generation、PermGen)が存在していたためです。しかし、MetaspaceはPermGenに置き換わり、GCヒープ外のネイティブメモリ領域に独立して存在しています。MetaspaceがGCヒープの一部でなくなったため、メッセージの結合に意味がなくなっており、混乱を招く可能性があります。

JDK 25から、HotSpot JVMでのログのタグ付け方法が変わります。

ログの内容とログレベル(例:infoまたはdebug)は同じですが、Metaspaceに関連するメッセージは既存のmetaspaceタグを使用するようになります。以下は変更点を示す例です。

$ java -Xlog:gc*=debug ...

これまで

[1,370s][debug][gc,heap     ] GC(0) Y: Heap before GC invocations=0 (full 0):
[1,370s][debug][gc,heap     ] GC(0) Y:  ZHeap           used 862M, capacity 862M, max capacity 9216M
[1,370s][debug][gc,heap     ] GC(0) Y:   Cache          0M (0)
[1,370s][debug][gc,heap     ] GC(0) Y:  Metaspace       used 18720K, committed 19008K, reserved 1114112K
[1,370s][debug][gc,heap     ] GC(0) Y:   class space    used 1611K, committed 1728K, reserved 1048576K

JDK 25から

[1,039s][debug][gc,heap     ] GC(0) Y: Heap Before GC invocations=0 (full 0):
[1,039s][debug][gc,heap     ] GC(0) Y:  ZHeap           used 860M, capacity 860M, max capacity 9216M
[1,039s][debug][gc,heap     ] GC(0) Y:   Cache          0M (0)
[1,039s][debug][gc,metaspace] GC(0) Y: Metaspace Before GC invocations=0 (full 0):
[1,039s][debug][gc,metaspace] GC(0) Y:  Metaspace       used 18674K, committed 19008K, reserved 1114112K
[1,039s][debug][gc,metaspace] GC(0) Y:   class space    used 1601K, committed 1728K, reserved 1048576K

jcmd Update

この更新の一環で、jcmdにもユーザー向けの変更がいくつか追加されました。MetaspaceがGCヒープの一部ではないことを明確にするため、GC.heap_infoコマンドでMetaspaceの情報を表示しなくなりました。代わりに、Metaspaceのメモリ使用状況の詳細はVM.metaspaceに移動されました。以下は変更点を示す例です。

これまで

$ jcmd SourceLauncher GC.heap_info
71420:
 ZHeap           used 96M, capacity 576M, max capacity 9216M
  Cache          480M (1)
   size classes  256M (1)
 Metaspace       used 18155K, committed 18496K, reserved 1114112K
  class space    used 1536K, committed 1664K, reserved 1048576K

$ jcmd SourceLauncher VM.metaspace
71420:

Total Usage - 125 loaders, 2860 classes:
...

JDK 25から

$ jcmd SourceLauncher GC.heap_info
21832:
ZHeap            used 96M, capacity 576M, max capacity 9216M
 Cache           480M (1)
  size classes   256M (1)

$ jcmd SourceLauncher VM.metaspace
21832:
Metaspace        used 18134K, committed 18432K, reserved 1114112K
 class space     used 1519K, committed 1664K, reserved 1048576K

Total Usage - 125 loaders, 2834 classes:
...

このアップデートは、以下から入手可能な25-eaメインラインビルドに組み込まれました。

OpenJDK JDK 25 Early-Access Builds
https://jdk.java.net/25/

この変更の詳細については、JDK-8356938をご確認ください。

[JDK-8356938] Separate Metaspace and GC printing
https://bugs.openjdk.org/browse/JDK-8356938

ご意見やご要望は、hotspot-devメーリングリストまでご報告ください。

The hotspot-dev Archives
https://mail.openjdk.org/pipermail/hotspot-dev/

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください