死磕P7: JVM内存划分必知必会(一)

news2024/9/24 2:24:23

这是「死磕P7」系列第 001 篇文章,欢迎大家来跟我一起 死磕 100 天,争取在 2025 年来临之际,给自己一个交代。

JVM 内存区域划分是面试常考点,属于死记硬背型,比较让人头大的是不同版本的 JDK 具有不同的划分方式,主要矛盾点就来自 方法区,永久代,元空间 这几个破玩意。

整理了一些个人觉得比较靠谱的资料,进行了一些汇总,第一方便自己记忆,第二也希望大家不要再为内存区域划分的面试而苦恼。

虚拟机规范定义

先来看一下《Java 虚拟机规范》定义的概念,规范和具体实现是两回事,可以理解为规范是接口定义,具体的虚拟机实现是接口的实现类,实现细节千差万别,如 HotSpot VM, JRockit VM, Graal VM 等等(这些知道一下就好)。

程序计数器,虚拟机栈,本地方法栈基本没啥争议点,也比较好记,并且他们是属于线程隔离的(线程独享,一人一杯奶茶,各喝各的)

主要容易搞混的是 方法区 和 堆,究其原因其实就是因为版本更新导致的,一般大家说的都是 HotSpot VM, 下面用图示的方式告诉您不同版本的区别是什么。

JDK 1.6 内存划分

JDK 1.6 JVM 运行时内存就分为方法区(也叫永久代),堆,虚拟机栈,本地方法栈,程序计数器

JDK 1.7 内存划分

JDK 1.7 中将方法区中的字符串常量池和静态变量等存储区域调整到了堆中,方法区中只保留了类型信息,划分区域仍然是方法区(也叫永久代),堆,虚拟机栈,本地方法栈,程序计数器,唯一的区别就是方法区里面放置的内容减少了,如下图

JDK 1.8 内存划分

JDK 1.8 中将方法区直接移出了 JVM 内存,直接放置到了 物理内存 中,并且改名叫元空间(Meta Space),也就没有了永久代的叫法(当然,你要称元空间就是永久代也不算错,就好比你小时候一直被大家叫:狗蛋,长大了回老家,老同学还这么叫你一样,哈哈)

为什么做这些改动?

大概了解一点就行,我们又不是设计开发 JVM 的,别人给我们啥就用啥好了!

原因大概有以下几点:

  • Oracle 收购了两种 JVM:HotSpot VM 和 JRockit VM,并且想要将它们整合,但二者方法区实现差异较大;

  • 字符串存在永久代中,容易出现性能问题和 OOM;

  • 类及方法的信息大小较难确定,永久代大小难以确定:太小易导致永久代溢出,太大则易导致老年代溢出(JVM 内存是有限的,此消彼长);

  • 永久代会为垃圾回收带来不必要的复杂度,且回收效率较低(性价比低)。

总结

JVM 内存划分一直都是考点,当然考得不仅仅是上面简单的怎么划分的,今天主要让大家彻底搞懂不同版本 JVM 之间的划分差异,做到了然于胸,不再为网上的乱七八糟的文章所困惑(感觉大家写的又对又不对,比较乱)。

下一篇我们会继续解读 JVM 的内存划分,主要介绍各区域的一些特点。

如果大家对技术感兴趣,欢迎大家链接我,一起拉个小群技术交流,一起成长。

小福利

文末小福利,作为资深囤货达人,购置或转存了上千 T 的各种资源,反正我也学不完,如有需要,可以公号: 新质程序猿 找到我,直接送您,能帮助到大家也算是有所福报吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2159077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

联合复现!考虑最优弃能率的风光火储联合系统分层优化经济调度!

前言 目前,尽管不断地追逐可再生能源全额消纳方式,大幅减小弃风弃光电量,但是若考虑风电、光伏发电的随机属性,全额消纳可能造成电网峰谷差、调峰难度及调峰调频等辅助服务费用的剧增,引起电网潜在运行风险。因此&…

英特尔AI加速器Gaudi 3下周发布,挑战NVIDIA统治地位!

英特尔正稳步推进其2024年计划,备受瞩目的AI加速器Gaudi3预计将于下周震撼登场。这款被誉为英特尔AI英雄的产品,专注于处理大规模训练和推理任务,拥有无与伦比的扩展能力。面对市场对高效能半导体的旺盛需求,英特尔首席执行官帕特…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜,有什么特别之处? Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年,2017 年美国东部时间 3 月 2 日上午 11 时许,在纽交所正式挂牌交易,股票代码为 “SNAP”。其旗下的核…

力扣 2529.正整数和负整数的最大计数

文章目录 题目介绍解法 题目介绍 解法 采用红蓝染色体法,具体介绍参考 红蓝染色体法 通过红蓝染色体法可以找到第一个大于大于target的位置,使所以本题可以找第一个大于0的位置,即负整数的个数;数组长度 - 第一个大于1的位置即正…

2000-2012年各地级市市长特征信息数据/市长特征信息大全数据

2000-2012年各地级市市长特征信息数据 1、时间:2000-2012年 2、来源:百度搜索手工整理 3、指标:省级政区代码、省级政区名称、地市级政区代码、地市级政区名称、年份、市长姓名、出生年份、出生月份、籍贯省份代码、籍贯省份名称、籍贯地市…

垃圾邮件检测_TF-IDF分析,聚类分析与朴素贝叶斯

数据入口:基于机器学习的垃圾信息识别分类 - Heywhale.com 本数据集专为邮件和短信的垃圾信息分类设计,适合建立垃圾邮件检测模型。 数据说明 字段名说明message_content邮件或短信的正文内容is_spam标签,指示该消息是否为垃圾信息&#x…

恒生科指八连涨,汽车股强势

9月20日电 周五,港股三大股指集体收涨。恒生指数涨1.36%报18258.57点,连续第六个交易日上涨;恒生科技指数涨1.43%报3703.84点,连续第八个交易日上涨,创逾两个月来新高;恒生中国企业指数涨1.21%报6381.5点&a…

Set 和 Map 的模拟实现

1、引言 在数据结构与算法的学习与实践中,关联容器(associative containers)是不可忽视的重要工具。作为高效管理数据的一类容器,C 标准库中的 set 和 map 在现代软件开发中扮演着关键角色。这两个容器通过平衡二叉搜索树&#x…

c++类中的特殊函数

My_string.cpp #include <iostream> #include "my_string.h" #include <string.h> using namespace std; My_string::My_string():size(15) { this->ptr new char[size] ; this->ptr[0]\0;//串为空串 this->len 0; }; My_string::My_str…

Leetcode3289. 数字小镇中的捣蛋鬼

Every day a Leetcode 题目来源&#xff1a;3289. 数字小镇中的捣蛋鬼 解法1&#xff1a;哈希 代码&#xff1a; /** lc appleetcode.cn id3289 langcpp** [3289] 数字小镇中的捣蛋鬼*/// lc codestart class Solution { public:vector<int> getSneakyNumbers(vector…

基于SpringBoot+Vue+MySQL的电影院购票管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着电影产业的蓬勃发展&#xff0c;电影院已成为人们休闲娱乐的重要场所。然而&#xff0c;传统的电影院购票管理系统存在诸多不便&#xff0c;如购票流程繁琐、排队时间长、无法提前选座等问题&#xff0c;给观众的观影体验带…

光控资本:沪指涨0.72%,煤炭、银行板块拉升,车路云概念活跃

23日早盘&#xff0c;沪指盘中强势上扬&#xff0c;深证成指亦走高&#xff0c;场内超3100股飘红。 到午间收盘&#xff0c;沪指涨0.72%报2756.39点&#xff0c;深证成指涨0.58%&#xff0c;创业板指微涨0.09%&#xff0c;上证50指数涨0.73%&#xff1b;两市估计成交3657亿元。…

828华为云征文 | 将Vue项目部署到Flexus云服务器X实例并实现公网访问

一、Flexus云服务器X实例简介 1.1 概述 华为云Flexus X实例是华为云推出的一款创新云服务器产品&#xff0c;它主要面向中小企业和开发者&#xff0c;旨在解决传统云服务中的痛点&#xff0c;提供更加灵活、高效的云服务体验。 华为深刻洞察了中小企业和开发者在云服务应用中遇…

全栈开发(三):springBoot3中使用mybatis-plus

MyBatis-Plus &#x1f680; 为简化开发而生 (baomidou.com) 1.配置pom.xml <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version></dependency&g…

JavaScript --- 字符串常用方法(2)

concat拼接 和号一样 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

基于微信小程序的商品展示+ssm(lw+演示+源码+运行)

商品展示系统 摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;微信小程序被用户普遍使用&#xff0c;为方…

英伟达 Blackwell平台和ASIC芯片升级助力,预计2025年液冷散热渗透率将超20%

TrendForce集邦咨询: 英伟达 Blackwell平台和ASIC芯片升级助力&#xff0c;预计2025年液冷散热渗透率将超20% 根据TrendForce集邦咨询最新调查&#xff0c;随着NVIDIA Blackwell新平台预计于2024年第四季出货&#xff0c;将推动液冷散热方案的渗透率明显增长&#xff0c;从202…

完全无线测量物体电压

无线电压测量的物理原理 所有导电物体都具有一定的电容&#xff0c;我们可以将其分为自电容和相对于其他导体的电容。对于孤立物体&#xff0c;自电容占主导地位&#xff1b;对于导电球体&#xff0c;这是教科书表达式C 4 πεε 0 R&#xff0c;其中ε 0是自由空间的介电常数…