JVM详解:运行时数据区-方法区

12/31/2023 Java

目录


参考:

  • 链接1:[https://blog.csdn.net/qq_48435252/article/details/123697193

# JVM详解:运行时数据区-方法区

方法区的理解

《Java虚拟机规范》中明确说明:‘尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。’但对于HotSpotJVM而言,方法区还有一个别名叫做Non-heap(非堆),目的就是要和堆分开。所以,方法区可以看作是一块独立于Java堆的内存空间

方法区(Method Area)与Java堆一样,是各个线程共享的内存区域

方法区在JVM启动时就会被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的

方法区的大小,跟堆空间一样,可以选择固定大小或者可拓展

方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误:OOM。

比如:

加载大量的第三方jar包;
Tomcat部署的工程过多;
大量动态生成反射类;
关闭JVM就会释放这个区域的内存

方法区在运行时数据区中的位置

e4ed6923b0494d089c09dbf0776a0d61

方法区存储的信息

edc30443ce934695845783dc7fb0986a

方法区用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等。

上次更新时间: 9/25/2024, 9:17:45 AM