晓果冻
JVM运行时数据区-堆
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
晓果冻
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
JVM运行时数据区-堆
JVM运行时数据区-堆
晓果冻
关注
发布于 2022-09-08 13:58:13
142
0
发布于 2022-09-08 13:58:13
举报
文章被收录于专栏:
一直在努力的Java菜鸡er
JVM运行时数据区-堆
核心概念:
可以处于物理上不连续的内存空间,只需逻辑上连续即可。
一个JVM进程中堆是唯一的,一个进程有多个线程,所以堆是可以被一个JVM进程中的多个线程共享,也就是说堆是线程不安全的。
也就是堆内存是被线程共享的,但其中一小块区域TLAB(私有缓存区)是线程私有的,我在后面详细学习哈。
在JVM启动的时候被创建,其大小也就被确定了。
可以通过**-Xmx和-Xms**来控制其最大内存和最小内存
如果堆中内存没有完成实例分配且堆无法再继续扩展,则会抛出OutOfMemory的异常(OOM)。
对象实例、数组都在对上完成分配
不是全部对象,有一部分对象会发生逃逸,很深很深的概念,画圈圈后期深入学习。
逃逸分析
GC垃圾回收重点关照区域。
堆的构成:
JDK1.8之前新生代-老年代
新生代又分为:Eden区和Survivor区
Survivor区分为:Survivor From和Survivor TO(或者s0、s1)
频繁的对象创建和回收->性能瓶颈?优化:
逃逸分析
减少临时对象在堆内分配的数量。
后续补充
优点:与栈相比,可以动态的分配内存,生命周期也不需要明确,但分配灵活,也造成了其访问速度较慢的缺点。
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
jvm
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
jvm
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
目录
JVM运行时数据区-堆
核心概念:
后续补充
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐