JVM方法区有哪些关键特性及详解?

2026-05-19 12:220阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4318个文字,预计阅读时间需要18分钟。

JVM方法区有哪些关键特性及详解?

您好,我是程序员,专注于分享大数据、算法、Java、Python等相关知识,欢迎和我一起交流学习。+联系我+JVM系列文章我们已经更新完毕了JVM的类加载子系统、虚拟机栈等内容,今天我们来聊聊。

大家好,我是程序员学长,专注分享大数据、算法、java、python等相关知识,欢迎和我一起交流学习。

联系我

JVM 系列文章我们已经更新完了JVM 的类加载子系统和虚拟机栈,今天我们来聊一下 JVM 之方法区。

首先,我们来看一下方法区和堆、栈之间的交互关系。

  • User 存放在元空间,也可以说是在方法区中
  • 变量 user 存放在 java 栈的局部变量表中
  • new User() 存放在 java 堆中
方法区的理解

在《Java虚拟机规范》中明确说明,“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩”。但对于 HotSpot 虚拟机而言,方法区还有一个别名叫做 Non-Heap(非堆),目的就是要和堆分开。

所以,方法区可以看做是一块独立于 Java 堆的内存空间。

方法区主要存放的是 Class,而堆中主要存放的是实例化对象。

  • 方法区和 JAVA 堆一样,是各个线程共享的区域。
  • 方法区在 JVM 启动的时候被创建,并且它实际的物理内存空间和 JAVA 堆 一样都可以是不连续的。
  • 方法区的大小,和堆空间一样,可以选择固定大小或者可扩展的。
  • 方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出的错误。
阅读全文

本文共计4318个文字,预计阅读时间需要18分钟。

JVM方法区有哪些关键特性及详解?

您好,我是程序员,专注于分享大数据、算法、Java、Python等相关知识,欢迎和我一起交流学习。+联系我+JVM系列文章我们已经更新完毕了JVM的类加载子系统、虚拟机栈等内容,今天我们来聊聊。

大家好,我是程序员学长,专注分享大数据、算法、java、python等相关知识,欢迎和我一起交流学习。

联系我

JVM 系列文章我们已经更新完了JVM 的类加载子系统和虚拟机栈,今天我们来聊一下 JVM 之方法区。

首先,我们来看一下方法区和堆、栈之间的交互关系。

  • User 存放在元空间,也可以说是在方法区中
  • 变量 user 存放在 java 栈的局部变量表中
  • new User() 存放在 java 堆中
方法区的理解

在《Java虚拟机规范》中明确说明,“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩”。但对于 HotSpot 虚拟机而言,方法区还有一个别名叫做 Non-Heap(非堆),目的就是要和堆分开。

所以,方法区可以看做是一块独立于 Java 堆的内存空间。

方法区主要存放的是 Class,而堆中主要存放的是实例化对象。

  • 方法区和 JAVA 堆一样,是各个线程共享的区域。
  • 方法区在 JVM 启动的时候被创建,并且它实际的物理内存空间和 JAVA 堆 一样都可以是不连续的。
  • 方法区的大小,和堆空间一样,可以选择固定大小或者可扩展的。
  • 方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出的错误。
阅读全文