发布于2021-05-29 19:06 阅读(981) 评论(0) 点赞(2) 收藏(3)
思想:每一个对象都有一个counter,只要有任何一个对象引用了该对象,则其counter加1,当引用失效时,counter减1,当counter为0时,对象不存在任何引用,在GC时被清除
GC过程:counter在每次引用生效和失效时进行加减法操作,并判断是否为0,是则清除
优点:只需要为每一个对象配备一个整型的计数器
缺点:
思想:标记压缩法是对标记清除法的优化,所以也叫标记清除压缩法。和标记清除法一样,先标记所有的可达对象(存在引用的对象),不同的是,标记完成后并不是直接清除未标记的垃圾对象,而是将所有的被标记的对象(即存活对象)压缩到内存空间的一端后在清理边界外所有的空间。
GC过程:分为标记+压缩+清除 三个步骤
优点:解决了标记清除法带来的空间碎片问题,又不需要折损可使用空间(复制算法折损了可使用空间)
思想:将内存空间分为两块相同的存储空间,每次只使用一块,GC时,将正在使用的内存中的存活对象复制到另一块存储空间中,然后清除正在使用的空间的所有对象
GC过程:先复制,再清除
优点:存活对象相对少时,效率很高(因为需要复制的对象少),存活对象复制到另一空间时,解决了空间碎片问题,保证了内存空间的连续性,又避免了大量的空间浪费
缺点:系统内存只能使用一半的内存空间,而且如果存活对象相对多的话,比较耗时
应用场景:java新生代串行垃圾回收器
新生代分为eden空间、from空间和to空间3个部分,其中from和to空间是两块相同的空间,同一时间只使用其中一块空间,另一空间用于GC时存放复制的存活对象,from和to空间也称为survivor空间,用于存放未被回收的对象。
作者:姜小姜小
链接:https://www.jianshu.com/p/4bdc443f5c92
来源:简书
-Xms:初始堆大小
-Xmx:最大堆大小
-XX:NewSize=n:设置年轻代大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
注:以Tomcat服务启动,对于参数设置,在tomcat的bin目录下,window系统在catalina.bat中设置,Linux系统在catalina.sh中设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
注:在eclipse中设置JVM启动参数,在Run菜单下的“run configurations”配置:
原文链接:https://blog.csdn.net/weixin_43145539/article/details/117339567
作者:你看我可爱不
链接:http://www.javaheidong.com/blog/article/207110/ff19c2f2e3223bacc0ca/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!