JVM内存模型的演变

news/2024/11/24 0:43:16/

1,背景

class文件、类的加载过程。我们的class文件就要进入到JVM内存里,我们沿着经典的JDK1.6,JDK1.7,JDK1.8看看在其中都经历了哪些改变

概念的统一:

  • 方法区:
    方法区可以看作是JVM逻辑上管理一片区域的名字的概念
  • 永久代:
    永久代和元空间都是对方法区的实现,只不过是1.7以前是永久代,1.8开始永久代被替代成元空间了。
  • 元空间:

2,内存模型的演变

1.6及以前JVM运行时数据区,方法区叫永久代

请添加图片描述

JVM1.7

1.7永久代还存在,但是已经逐步去永久代,字符串常量和静态变量移到堆中请添加图片描述

JVM1.8 及以后

1.8以后,无永久代,类型信息、字段、方法、常量直接保存在元空间,元空间用的是直接内存,字符串常量池和静态常量还是保持在堆中。请添加图片描述

思考

永久代为什么要被元空间替换?
永久代设置空间大小是很难确定的。在某些场景下,如果动态加载的类过多,容易产生OOM。或者是朝生夕死的类比较多。
对永久代的调优比较困难

字符串常量池为什么调整?
永久代的回收效率比较低,在full gc的时候才会触发。发生full gc是老年代的空间不足、永久代空间不足才会促发。这就导致stringTable回收效率不高。而我们开发中会有大量的字符串被创建,回收效率低,导致永久代内存不足。放到堆中能及时回收。


http://www.ppmy.cn/news/53590.html

相关文章

【数据库】增删改查(进阶)

目录 1、数据库的约束类型 1.1、not noll约束 1.2、unique(唯一性约束) 1.3、default默认值约束 1.4、primary key(主键约束) 1.4.1、自增主键(关键字auto_increment) 1.5、foreign key (外…

C语言函数大全-- p 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- p 开头的函数 1. perror 1.1 函数说明 函数声明函数功能void perror(const char *s);用于将当前错误码对应的错误信息打印到标准输出设备(通常是终端)。 参数: s : 用于描述错误类型或…

跟着我学习 AI丨初识 AI

人工智能(AI)是一种模拟人类思维和行为的计算机技术,通过学习、推理和自我修正等方式,使机器能够模拟人类智能,并具有一定的自主决策能力。AI 可以被用于解决各种难题,如自动化、机器人、自动驾驶、语音识别…

14.基于双层优化的电动汽车优化调度研究(文章复现)

说明书 MATLAB代码:基于双层优化的电动汽车优化调度研究 关键词:双层优化 选址定容 输配协同 时空优化 参考文档:《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》中文版 《A bi-layer optimization based temporal and sp…

史上最烂 spring aop 原理分析

盗引中篇spring aop spring aop: jdk 动态代理和 cglib 动态代理的特点、区别、使用方式、原理及各自对反射的优化、二者在 spring 中的统一、通知顺序、从 Aspect 到 Advisior、静态通知调用、动态通知调用。 版本 jdk:8spring:5.3.20spring boot&…

《python爬虫练习2》爬取网站表情包

获取网站表情包 运行环境: #环境:win10 import requests #发送请求 from lxml import etree #获取html主页树状代码 import os #创建本地文件夹用来存储图片1.分析: 目标网址:https://www.runoob.com/ 首先想要获取什么就从哪…

大数据专业好找工作么

现在,在数字化转型的推动下,越来越多的企业意识到大数据的魅力,并不断在这个领域投入资金,Python大数据开发相关人才也备受青睐! 学Python之前:这玩意真有传说中那么好么? 学Python之后&#…

Burpsuite双层代理以及抓https与app包设置

Burp Suite是一款用于Web应用程序安全测试的集成式平台。它由PortSwigger Ltd.开发,是一个功能强大的工具,用于发现Web应用程序的漏洞和安全问题,例如跨站点脚本(XSS)、SQL注入、会话劫持等。它包括多个模块&#xff0…