学习JVM之内存管理 03——JVM的方法区、元空间
2022/1/20 7:15:20
本文主要是介绍学习JVM之内存管理 03——JVM的方法区、元空间,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
什么是方法区呢?
方法区的实现
早期JDK
JDK8
元空间
什么是方法区呢?
用于存储已被虚拟机加载的 类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。《Java虚拟机规范》中把 方法区 描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”目的是与Java堆区分开来。
注意这里有一个地方很重要:《Java虚拟机规范》中把 方法区 描述为堆的一个逻辑部分,这句话,思路不要乱。明确两点:
- 逻辑
- 他不是堆
堆 , 是JVM虚拟机内存中的一块内存,是物理上存在的,会被分配的。
方法区,是堆的一个逻辑部分。也意味着,存在一个与之对应的物理实现。
方法区的实现
早期JDK
我这里的早期JDK 概念呢就是 JDK8 之前的。
这个时候,实现方法区的东西叫做 永久代 。
这个永久代,是Java堆的一部分。类型信息、常量、静态变量等方法区的数据,就存储在这个位置。
JDK6的时候,HotSopt(一种JVM虚拟机)就有放弃永久代的计划了,在JDK7,实现了一部分数据的转移。到JDK8,完全废弃了永久代的概念。
JDK8
那么,取代永久代的就来了。他叫 元空间 。
元空间
这个元空间比较特殊啊,它是本地内存的一块。不在JVM虚拟机中。
但是要注意:并不是方法区的一切都在元空间内。
常量池(包括运行时常量池和字符串常量池)和 静态变量还在堆中。
类型信息(元数据信息)等其他信息被移动到了元空间中。
就是元空间主要存放的是类型信息。
好啦,这一篇就到这里了。
早睡早起,注意身体。早起之王,祝你风生水起。
这篇关于学习JVM之内存管理 03——JVM的方法区、元空间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南