ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

学习JVM之内存管理 03——JVM的方法区、元空间

2022-01-19 22:07:45  阅读:175  来源: 互联网

标签:03 Java 类型信息 虚拟机 JDK8 内存 JVM 方法


目录

什么是方法区呢?

方法区的实现

早期JDK

JDK8

元空间


什么是方法区呢?

        用于存储已被虚拟机加载的 类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。《Java虚拟机规范》中把 方法区 描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”目的是与Java堆区分开来。

注意这里有一个地方很重要:《Java虚拟机规范》中把 方法区 描述为堆的一个逻辑部分,这句话,思路不要乱。明确两点:

  1. 逻辑
  2. 他不是堆

堆 , 是JVM虚拟机内存中的一块内存,是物理上存在的,会被分配的。

方法区,是堆的一个逻辑部分。也意味着,存在一个与之对应的物理实现。

方法区的实现

早期JDK

我这里的早期JDK 概念呢就是 JDK8 之前的。

这个时候,实现方法区的东西叫做 永久代 。

这个永久代,是Java堆的一部分。类型信息、常量、静态变量等方法区的数据,就存储在这个位置。

JDK6的时候,HotSopt(一种JVM虚拟机)就有放弃永久代的计划了,在JDK7,实现了一部分数据的转移。到JDK8,完全废弃了永久代的概念。

JDK8

那么,取代永久代的就来了。他叫 元空间 。

元空间

这个元空间比较特殊啊,它是本地内存的一块。不在JVM虚拟机中。

但是要注意:并不是方法区的一切都在元空间内。

常量池(包括运行时常量池和字符串常量池)和 静态变量还在堆中。

类型信息(元数据信息)等其他信息被移动到了元空间中。

就是元空间主要存放的是类型信息。

好啦,这一篇就到这里了。

早睡早起,注意身体。早起之王,祝你风生水起。

标签:03,Java,类型信息,虚拟机,JDK8,内存,JVM,方法
来源: https://blog.csdn.net/qq_57014350/article/details/122590237

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有