百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗

yuyutoo 2024-10-23 16:41 2 浏览 0 评论

目录:

[干货] JAVA - JVM - 1 JVM一套带走

[干货] JAVA - JVM - 2 内存两分

[干货] JAVA - JVM - 3 字符串常量池

[干货] JAVA - JVM - 4 类加载

[干货] JAVA - JVM - 9 内存回收

[干货] JAVA - JVM - 10 内存回收-跟搜索算法

[干货] JAVA - JVM - 11 内存回收-回收策略

[干货] JAVA - JVM - 12 内存回收-跟搜索算法的 HotSpot 实现

[干货] JAVA - JVM - 13 内存回收-HotSopt 的分代策略和收集器

[干货] JAVA - JVM - 14 内存并发- JMM Volatile CAS

[干货] JAVA - JVM - 15 内存并发-Synchronize wait notify


jvm 中内存分两部分,堆外和堆(这里是泛指)。

NativeMemory

名字很多,堆外内存,本地内存,C Heap,直接内存都是它。

  • 管理java heap的状态数据(用于GC);
  • JNI调用,也就是Native Stack;
  • JIT(即时编译器)编译时使用Native Memory,并且JIT的输入(Java字节码)和输出(可执行代码)也都是保存在Native Memory;
  • NIO direct buffer。对于IBM JVM和Hotspot,都可以通过-XX:MaxDirectMemorySize来设置nio直接缓冲区的最大值。默认是64M。超过这个时,会按照32M自动增大。

这里提一句直接内存的释放,释放时只能通过释放直接内存的引用来间接释放。

Heap & Stack

通常大家理解的堆栈。容我dao个图:

每个线程独自使用。

栈内部的部分看图自明,But:HotSpot 中没有本地方法栈,和 JavaStack 在一起。

所有线程共同使用。

堆内部的具体分代结构,后边到回收部分再说。

方法区

名字很多,各种资料中的名字不大相同,大概有这些:方法区、持久区、Method Area 等。

1 Class 元数据和 Class 常量池

各种资料说的很乱(原谅我实在是看不懂 JVM 的源码~~,嗯.... 其实是犯懒,这玩意还用看源码?用用就知道了。),根据我的理解,这俩个东西其实是同一个,本人之后的所有博文有可能不固定的称呼,请诸公理解。

包含两部分:

所有的Literal:字符串、8中基本类型的值、final 的常量

所有的Symbolic References:类的全限定名、字段名称和描述符、方法名称和描述符(包含 public void 和 parameter type,parameter name 在 java8 中也可以放到方法区,那时候就不叫方法区了,叫 MetaSpace,关于变化稍后容禀)。

另外:有人会有疑问,static 的在什么地方?其实这和上边的不冲突,就看是否有 final,如果是 final 的,也是 Literal,如果没有,也是可以赋值的,在 Heap 中。个人见解,欢迎拍砖。

2 String Constant Pool 字符串常量池

zhei 东西不是每个类特有,是所有的类共有。

话说有个 StringTable 是个Map(PS:老程序员喜欢把什么什么 Map 称之为什么什么 Table,比如我~~),初始默认1009,MLGDD。说来话长,赶明我单写一章,或者有想琢磨的可以 google String.intern()。

Java6 中的方法区

  • Class 元数据
  • String Constant Pool 字符串常量池

Java7 中的方法区

String Constant Pool 字符串常量池 从方法区转移到 Java Heap 中。

Java8 中的方法区

删除方法区,新增 MetaSpace

Literal字面量移动到 Java Heap

Symbolic References 移动到 Native Memory

MaxMetaspaceSize 参数调整大小,也可以不指定,如果不指定,jvm 会动态调整。


欢迎拍砖,决绝骂娘

相关推荐

史上最全的浏览器兼容性问题和解决方案

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...

平面设计基础知识_平面设计基础知识实验收获与总结
平面设计基础知识_平面设计基础知识实验收获与总结

CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...

2025-02-21 16:01 yuyutoo

写作排版简单三步就行-工具篇_作文排版模板

和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...

写一个2048的游戏_2048小游戏功能实现

1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...

今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……

  最近的天气暖和得让很多小伙伴们喊“热”!!!  昨天的气温到底升得有多高呢?你家有没有榜上有名?...

CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式

之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...

柠檬科技肖勃飞:大数据风控助力信用社会建设

...

你的自我界限够强大吗?_你的自我界限够强大吗英文

我的结果:A、该设立新的界限...

行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?

行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...

让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华

去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...

2025-02-21 16:00 yuyutoo

今年国家综合性消防救援队伍计划招录消防员15000名

记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...

一起盘点最新 Chrome v133 的5大主流特性 ?

1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...

竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使

style="text-align:center;"data-mce-style="text-align:...

学物理能做什么?_学物理能做什么 卢昌海

作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...

你不知道的关于这只眯眼兔的6个小秘密
你不知道的关于这只眯眼兔的6个小秘密

在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...

2025-02-21 16:00 yuyutoo

取消回复欢迎 发表评论: