You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于java.lang.Class对象存储位置的确认及官方文档需求

java.lang.Class对象的存储位置说明
  • 核心结论:java.lang.Class对象本身存储在**Heap(堆)**中;而它所代表的类元数据(比如方法字节码、常量池、字段定义等),Java 8及以后存于Metaspace,Java 8之前存于PermGen。

  • 关键区分点:

    • java.lang.Class是JVM完成类加载后创建的普通Java对象,和你自己用new关键字创建的对象没有本质区别,会被分配在堆内存中(分代收集的HotSpot里,可能在Eden区或老年代)。
    • Metaspace/PermGen的作用是存储类的元数据信息——这是JVM内部用来描述类结构的底层数据,不属于Java层面的对象范畴。
  • 官方文档依据:

    《Java Virtual Machine Specification》(Java SE 8版本)2.5.3章节明确指出:"The Java Virtual Machine has a heap that is shared among all Java Virtual Machine threads. The heap is the run-time data area from which memory for all class instances and arrays is allocated."
    这段描述直接说明,所有类实例(包括Class对象)的内存都从堆中分配。

    HotSpot虚拟机官方文档对Metaspace的定义中提到:Metaspace用于存储类元数据(class metadata),包含类的结构信息、方法字节码等,但不存储Java对象实例,Class对象作为实例仍属于堆内存范畴。

内容的提问来源于stack exchange,提问作者pjj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:40:35