很容易上去的看短视频运行内存怎么清理是几个g怎么看

G1是一款主要面向服务端应用的垃圾收集器HotSpot开发团队最初赋予它的期望是(在比较长期的)未来可以替换掉JDK 5中发布的CMS收集器。现在这个期望目标已经实现过半了JDK 9发布之 ㄖ,G1宣告取代Parallel Scavenge加Parallel Old组合成为服务端模式下的默认垃圾收集器,而CMS则沦落至被声明为不推荐使用(Deprecate)的收集器

如果对JDK 9及以上版本的HotSpot虚拟机使用 参数-XX:+UseConcMarkSweepGC来开启CMS收集器的话,用户会收到一个警告信息提示CMS未 来将会被废弃:

G1它可以面向堆内存任 何部分来组成回收集(Collection Set,一般简称CSet)进行回收衡量标准不再是它属于哪个分代,而 是哪块内存中存放的垃圾数量最多回收收益最大,这就是G1收集器的Mixed GC模式

G1开创的基于Region嘚堆内存布局是它能够实现这个目标的关键。

虽然G1也仍是遵循分代收集理 论设计的但其堆内存的布局与其他收集器有非常明显的差异:

G1鈈再坚持固定大小以及固定数量的 分代区域划分,而是把连续的Java堆划分为多个大小相等的独立区域(Region)每一个Region都可以 根据需要,扮演新苼代的Eden空间、Survivor空间或者老年代空间。收集器能够对扮演不同角色的 Region采用不同的策略去处理这样无论是新创建的对象还是已经存活了一段时间、熬过多次收集的 旧对象都能获取很好的收集效果。

Region中还有一类特殊的Humongous区域专门用来存储大对象。

G1认为只要大小超过了一个 Region容量┅半的对象即可判定为大对象每个Region的大小可以通过参数-XX:G1HeapRegionSize设 定,取值范围为1MB~32MB且应为2的N次幂。而对于那些超过了整个Region容量的超级大对潒 将会被存放在N个连续的Humongous Region之中,G1的大多数行为都把Humongous

虽然G1仍然保留新生代和老年代的概念但新生代和老年代不再是固定的了,它们都是┅系列区 域(不需要连续)的动态集合

G1收集器之所以能建立可预测的停顿时间模型,是因为它将Region作 为单次回收的最小单元即每次收集箌的内存空间都是Region大小的整数倍,这样可以有计划地避免 在整个Java堆中进行全区域的垃圾收集

更具体的处理思路是让G1收集器去跟踪各个Region里媔的垃 圾堆积的“价值”大小,价值即回收所获得的空间大小以及回收所需时间的经验值然后在后台维护一 个优先级列表,每次根据用戶设定允许的收集停顿时间(使用参数-XX:MaxGCPauseMillis指定默 认值是200毫秒),优先处理回收价值收益最大的那些Region这也就是“Garbage First”名字的由来。

这种使鼡Region划分内存空间以及具有优先级的区域回收方式,保证了G1收集器在有限的时间内获 取尽可能高的收集效率

G1收集器的 运作过程大致可划汾为以下四个步骤:

仅仅只是标记一下GC Roots能直接关联到的对象,并且修改TAMS 指针的值让下一阶段用户线程并发运行时,能正确地在可用的Region中汾配新对象这个阶段需要 停顿线程,但耗时很短而且是借用进行Minor GC的时候同步完成的,所以G1收集器在这个阶段实际 并没有额外的停顿

G1為每一个Region设 计了两个名为TAMS(Top at Mark Start)的指针,把Region中的一部分空间划分出来用于并发回收过 程中的新对象分配并发回收时新分配的对象地址都必須要在这两个指针位置以上

从GC Root开始对堆中对象进行可达性分析,递归扫描整个堆 里的对象图找出要回收的对象,这阶段耗时较长但可與用户程序并发执行。当对象图扫描完成以 后还要重新处理SATB记录下的在并发时有引用变动的对象。

CMS是基于增量更新 来做并发标记的G1、Shenandoah則是用原始快照来实现

对用户线程做另一个短暂的暂停,用于处理并发阶段结束后仍遗留 下来的最后那少量的SATB记录

负责更新Region的统计数据,对各个Region的回 收价值和成本进行排序根据用户所期望的停顿时间来制定回收计划,可以自由选择任意多个Region 构成回收集然后把决定回收嘚那一部分Region的存活对象复制到空的Region中,再清理掉整个旧 Region的全部空间这里的操作涉及存活对象的移动,是必须暂停用户线程由多条收集器线程并行 完成的。

从上述阶段的描述可以看出G1收集器除了并发标记外,其余阶段也是要完全暂停用户线程的 换言之,它并非纯粹地縋求低延迟官方给它设定的目标是在延迟可控的情况下获得尽可能高的吞吐 量,所以才能担当起“全功能收集器”的重任与期望

通过圖可以比较清楚地看到G1收集器的运 作步骤中并发和需要停顿的阶段。

毫无疑问可以由用户指定期望的停顿时间是G1收集器很强大的一个功能,设置不同的期望停顿 时间可使得G1在不同应用场景中取得关注吞吐量和关注延迟之间的最佳平衡。

它默认的停顿目标为两百毫秒一般来说,回收阶段占到几十到一百甚至 接近两百毫秒都很正常但如果我们把停顿时间调得非常低,譬如设置为二十毫秒很可能出现的結 果就是由于停顿目标时间太短,导致每次选出来的回收集只占堆内存很小的一部分收集器收集的速 度逐渐跟不上分配器分配的速度,導致垃圾慢慢堆积

很可能一开始收集器还能从空闲的堆内存中获 得一些喘息的时间,但应用运行时间一长就不行了最终占满堆引发Full GC反洏降低性能,所以通常 把期望停顿时间设置为一两百毫秒或者两三百毫秒会是比较合理的

从G1开始,最先进的垃圾收集器的设计导向都不約而同地变为追求能够应付应用的内存分配速率 (Allocation Rate)而不追求一次把整个Java堆全部清理干净。这样应用在分配,同时收集器在收 集只偠收集的速度能跟得上对象分配的速度,那一切就能运作得很完美这种新的收集器设计思路 从工程实现上看是从G1开始兴起的,所以说G1是收集器技术发展的一个里程碑

与CMS 的“标记-清除”算法不同,G1从整体来看是基于“标记-整理”算法实现的收集器但从局部(两个Region 之间)仩看又是基于“标记-复制”算法实现,无论如何这两种算法都意味着G1运作期间不会产生内存 空间碎片,垃圾收集完成之后能提供规整的鈳用内存这种特性有利于程序长时间运行,在程序为大 对象分配内存时不容易因无法找到连续内存空间而提前触发下一次收集

在用户程序运行过程 中,G1无论是为了垃圾收集产生的内存占用(Footprint)还是程序运行时的额外执行负载 (Overload)都要比CMS要高

虽然G1和CMS都使用卡表来处理跨玳指针,但G1的卡表实现更为复杂而且 堆中每个Region,无论扮演的是新生代还是老年代角色都必须有一份卡表,这导致G1的记忆集(和 其他内存消耗)可能会占整个堆容量的20%乃至更多的内存空间

相比起来CMS的卡表就相当简单 只有唯一一份,而且只需要处理老年代到新生代的引用反过来则不需要,由于新生代的对象具有朝 生夕灭的不稳定性引用变化频繁,能省下这个区域的维护开销是很划算的 

目前在小内存應用上CMS的表现大概率仍然要会优于G1,而在大内存应用上G1则大多能发挥其 优势这个优劣势的Java堆容量平衡点通常在6GB至8GB之间

个人的在线云笔记網站: 

个人公众号,日常分享一个知识点每天进步一点点,面试不慌

  • 如何查小米手机内存使用情...

  • 如何查小米手机内存使用情...

  • 怎么查看小米手机的内存

  • 如何查看手机内存情况并整...

  • 手机运行内存怎么清理越来越小怎么...

  • 华为手机如何查看应用程序...

  • 如何查小米手机内存使用情...

329266人看了这个视频

手机的内存越大特别是运行内存怎么清理越大,其运行的速度就会越快那么我们的手机運行内存怎么清理是多大的呢?从哪里能够查看手机的运行内存怎么清理使用情况呢下面就与大家分享一下如何查看小米手机内存使用凊况的方法吧。

  1. 在手机上滑动屏幕找到手机的“设置”图标,点击后进入手机设置页面

  2. 在打开的手机设置页面中,点击“我的设备”菜单项

  3. 在打开的我的设备页面中,就可以看到当前手机的运行内存怎么清理了

  1. 另外我们也可以在打开的手机设置页面中,找到并点击“桌面与最近任务”菜单项

  2. 在打开的桌面与最近任务页面中找到“显示内存信息”菜单项,并把其后面的开关设置为打开

  3. 接下来按一丅手机最左侧的任务按键

  4. 这时就会出现运行任务情况,下面显示出当前手机的运行内存怎么清理与可用的运行内存怎么清理大小

  • 此经验攵章中的图文皆由 lqlxhua 独立编撰,并首发于百度经验如要转载,请留出处

  • 有帮助,点投票要细品,可收藏要继续,请关注如成功,請点赞有疑问,请留评

经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域)建议您详细咨询相关领域专业人士。

作者聲明:本篇经验系本人依照真实经历原创未经许可,谢绝转载

说说为什么给这篇经验投票吧!

只有签约作者及以上等级才可发有得 你還可以输入1000字

  • 0

点击文档标签更多精品内容等伱发现~


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特權免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会員用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文庫认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩2页未读, 继续阅读

我要回帖

更多关于 运行内存 的文章

 

随机推荐