JVM笔记五-堆区
JVM笔记五-堆区
在JVM中,堆区是重中之重。通过前面文章的学习,我们知道了,栈区是不会有垃圾回收的,所以,经常说的垃圾回收,其实就是回收的是堆区的数据。在这里,我们将会看到传说中的,新生代、老年代、永久代(元空间)。凯哥Java(kaigejava)欢迎大家一起学习。
堆(Heap):
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存分为三个部分:
堆内存分区:
Young Generation Space 新生区 Young/New
Tenure generation space 老年代 Old/Tenure
Permanent space 永久区/元空间 Perm
Java 7之前的堆内存示意图:
简版流程:
新生区是类的诞生、成长、消亡的区域,一个类在这里产生、应用,最后被垃圾回收器收集,结束生命。
新生区又分为两部分:伊甸园区(Eden space)和幸存者区(Survivor space)。所有的类都是在伊甸园区被new出来的。
幸存区有两个:0区(Survivor 0 space)和1区(Survivor 1 space).
当伊甸园区的空间用完时候,程序又需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收(Minor GC,也叫轻GC 或者是YGC),将伊甸园区中的不再被其他对象所引用的对象进行销毁。然后伊甸园中的剩余对象移动到幸存0区(也叫from区)。若幸存0区也满了,再对该地区进行垃圾回收,然后移动到1区(也叫to区)。
如果1区也满了怎么办呢?在经历了15次YGC后,幸存1区也满了,那么这个时候,JVM将会把这些数据移动到养老区。如果养老区也满了,这个时候就会进行MajorGC(也称Full GC 检查FGC)。执行full GC对养老区的内存进行清理。如果养老区执行了Full GC之后,发现依然无法进行对象的保存,这个时候就会出现OOM(OutOfMemoryError)异常了。
如果出现了java.lang.OutOfMemoryError:java heap space异常。说明Java虚拟机的堆内存不够用了。主要原因有以下两种:
1:java虚拟机的堆内存设置不够,可以通过参数-Xms、-Xmx来调整
2:代码中创建了大量的大对象,并且长时间不能被垃圾回收器回收的(内存地址被引用了)
当你的才华撑不起你的野心的时候,你就应该静下心来学习;
当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;
梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想要怎样的人生,静下心来学习,耐心沉淀,送给自己,共勉!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
就这一篇,解决90% 新手连接虚拟机的网络问题
一、虚拟机环境准备 本套文章是配合大数据平台搭建来编写的,所以下面我给出了大数据平台的4台机器规划。如果你只是单纯搭建学习环境,只需1台虚拟机即可。 1、安装3台新虚拟机,对于初学者不建议克隆虚拟机。克隆虚拟机到是方便,但是总会有一些网络问题。如果虚拟机玩得明白,可以只安装1台新虚拟机,另外再克隆2台虚拟机。 2、虚拟机配置要求 注意: 以上配置,可以根据自己的电脑配置调整,所以我给出的是区间范围。关于操作系统,自己熟悉啥就用啥!如果不会安装linux虚拟机系统的,请参考前面的文章。传送门如下: 1).数据可视化第3篇:安装linux操作系统5系列 2).数据可视化第4篇:安装linux操作系统6系列 3).数据可视化第13篇:安装linux操作系统7系列 3、虚拟机网络问题(让很多新手头疼) 3.1本机与虚拟连接不通?天空顠来5个字,那都不是事 1).windows本地防火墙关闭 (a)打开控制面板 (b)防火墙设置 如果上面图片右边位置,显示的是红色的,证明你的防火墙已经关闭了。如果上面图片右边位置,显示的是绿色的,证明你的防火墙没有关闭,请你关...
-
下一篇
微信上线直播叫板抖音快手?
国庆期间,微信不动声响地上线了几个新功能,作为日活达14亿的超级APP,想低调是不可能的。此次的重磅更新,更是一石激起千层浪,主要是因为新增的功能包括长视频和直播,并开通了微信小商店的入口。 早先微信就已上线主打短视频的“视频号”,并将其移入一级菜单。看来腾讯想在微信打造私域流量生态闭环,实现内容、流量和商业化齐头并进,这和发展势头迅猛的抖音快手如出一辙,是在公开宣战吗? 微信上线直播和长视频功能 迈入10月的第二天,IOS微信直接跳过了7.0.16版本,升级到7.0.17正式版。除了聊天功能、青少年模式的更新,变动最大的就是长视频和直播。 视频号可以发布“完整视频”了,即长视频。不过每位用户显示不同,有的是1到15分钟,有的是1到30分钟,还可以播放前一分钟预告。 直播功能也是嵌入在视频号当中的,增加了“发起直播”按钮,和“发表动态”平级,点击后即可进入“直播”和“直播预告”选择列表。 同时,视频号还开放了微信小商店入口,位于设置栏内,点击进入就可免费开店,默认店铺与视频号绑定。店铺类型包括个人和企业,只要开通店铺,就能支持直播、抢购等。 为了能连通店铺与视频号,微信还增加了“小商店...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能