JVM方法区有哪些关键特性及详解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4318个文字,预计阅读时间需要18分钟。
您好,我是程序员,专注于分享大数据、算法、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分钟。
您好,我是程序员,专注于分享大数据、算法、Java、Python等相关知识,欢迎和我一起交流学习。+联系我+JVM系列文章我们已经更新完毕了JVM的类加载子系统、虚拟机栈等内容,今天我们来聊聊。
大家好,我是程序员学长,专注分享大数据、算法、java、python等相关知识,欢迎和我一起交流学习。
联系我
JVM 系列文章我们已经更新完了JVM 的类加载子系统和虚拟机栈,今天我们来聊一下 JVM 之方法区。
首先,我们来看一下方法区和堆、栈之间的交互关系。
- User 存放在元空间,也可以说是在方法区中
- 变量 user 存放在 java 栈的局部变量表中
- new User() 存放在 java 堆中
在《Java虚拟机规范》中明确说明,“尽管所有的方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩”。但对于 HotSpot 虚拟机而言,方法区还有一个别名叫做 Non-Heap(非堆),目的就是要和堆分开。
所以,方法区可以看做是一块独立于 Java 堆的内存空间。
方法区主要存放的是 Class,而堆中主要存放的是实例化对象。
- 方法区和 JAVA 堆一样,是各个线程共享的区域。
- 方法区在 JVM 启动的时候被创建,并且它实际的物理内存空间和 JAVA 堆 一样都可以是不连续的。
- 方法区的大小,和堆空间一样,可以选择固定大小或者可扩展的。
- 方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出的错误。

