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

Java培训:什么是java中的堆内存?

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

Java培训:什么是java中的堆内存?

  应用程序创建的Java对象驻留在称为堆内存的内存中。堆是在JVM启动时创建的,根据应用程序的可用性,堆的使用率会增加并达到满堆。当堆使用率已满,并且进一步请求新对象分配时,当前堆内存中没有任何可用空间,则会发生垃圾收集。即在当不再使用的对象被删除后,该为新对象腾出空间的时候。想对java有更深入的了解,可以参加java培训,有助于进一步提升java知识和技能。

  在理解堆内存段之前,我们需要了解Java中分代垃圾收集的概念。

  在GC中,对堆内存中所有未引用的对象执行标记、扫描和压缩。随着越来越多的对象分配,JVM堆中堆积了大量的对象分配,这就需要更长的时间来进行垃圾收集。然而,对应用程序的经验或假设分析表明,大多数对象都是短期的。因此,标记和压缩JVM堆内存中的所有对象既低效又耗时。因此,GC实现了一个分代垃圾收集,它根据对象的年龄(寿命)对对象进行分类。通过这个过程,对象在不同的区域中分配,并相应地进行垃圾收集。

  

  堆内存主要分为两个区域:新生区(或苗圃)、旧空间

  1.新生区(或苗圃)

 

  无论何时创建新对象,都会将其分配给新生区。在java培训中,有很多关于堆内存的学习课程,不仅有理论知识,还有实践项目训练,让你深入浅出地掌握java语言。新生区基本上由两部分组成。

  A) Eden Space

  所有新对象首先在Eden Space中分配。

  B) Survivor Space

  在一个GC循环之后,所有来自Eden Space的活物体都被移动到Survivor Space。Survivor Space进一步分为两部分,s1和s2空间,也称为FromSpace和ToSpace。当JVM启动时,两个Survivor Space总是空的。

  2.旧空间

  当对象在具有多个GC周期的新生区长期存在时,它们将在Survivor Space中标记为“生存”。在完成GC周期的阈值后,他们将有资格晋升到旧空间。这些长寿命的物体被进一步移入旧空间。旧空间也被称为终身制的一代。此区域中的垃圾收集事件称为主要收集。

  完全GC执行所有代(新生区+旧空间)的清理。它执行从新生区到旧空间的所有活动对象的升级,以及旧空间的压缩。完全GC是停止世界暂停,这将确保没有分配新对象,并且在GC执行时对象不会突然变得不可访问。

  堆内存是java的一种内存分配机制,作为一名java 程序员,必须要搞懂Java的内存分配问题,这样在工作中就可以避免出现很多错误。参加java培训,可以帮你加深对java的了解,学到更多的技能,提升工作效率。

  本文来源 粤嵌好学谷 http://www.haoxuegu.com/

 

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

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

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