栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jvm运行时的内存的构成

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm运行时的内存的构成

1、内存组成部分

内存由栈区、堆区、方法区、程序计数器、本地方法栈

2、组成部分各自的特点 2.1 按照线程可否共享的分为:

可共享区域:方法区、堆区

不可共享区域:栈区、程序计数器、本地方法栈。

2.2 详细介绍各内存部分

2.2.3 程序计数器:概念,程序计数器通过记录一条条代码的顺序指令,并且在内存里面找到相应的数据,然后执行。

2.2.4栈区:栈区里面包含了一条条的方法栈帧,每一个方法栈帧里面包含了,一张局部变量表,和一张操作表。栈区的特点是栈里面的数据生命周期都很短,在生命周期结束之后,自动的放弃内存空间,主要存放:对象名,基本类型,方法参数,引用名(基本类型或者是方法参数),栈一般只要2M.

2.25 本地方法栈:栈区指的是java方法栈,而本地方法栈可能是c方法栈,可能是其他的,那么他们之间靠什么连接呢,那就是本地方法接口JIN.

2.2.6 方法区:方法区包括了class的二进制文件,包含了虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

2.2.7 堆内存区:是jvm运行时最大的内存块,包括了新生代和老年代,新生代又分为伊甸区,幸存区0和幸存区1;当jvm运行时,创建了大量的对象,当伊甸区存满了的时候,触发了GC,GC过来扫描,回收一些没用的对象,然后幸存了一些对象,也就是还在被引用的对象,那这个时候这些对象就被复制和被排序的拉进幸存区0,关键的是,这些对象在物理上是连续的,所以访问效率很高,此时幸存区0被标记为正在使用的幸存区。此时再创建了一些对象,然后又GC了一些对象,你会发现,此时的伊甸区有了空间碎片,我们需要去清理这些空间碎片,这时候内存管理把伊甸区幸存的对象和幸存区0号的对象,都一一复制到幸存区1号,然后自动排序,他们在物理空间上也是连续的,此时伊甸区和幸存区全部被清空。往复之后,我们发现,有很多对象一直没有被清理,这时,内存管理觉得这些对象会长时间被引用,于是把这些对象存放到老年代。

这些就是我今天对jvm内存的收获吧,希望继续加油!我会持续更新的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号