文档章节

jvm学习笔记(二)

李大毛
 李大毛
发布于 2015/11/11 20:41
字数 734
阅读 4
收藏 0

垃圾收集算法:

1)标记-清除算法:先标记再清除,缺点是会造成大量内存碎片。

2)复制算法:虚拟机内存分为等大的两部分,一部分快用完时将这一部分复制到另一块内存上,在把复制前存放的这一块内存清除。缺点是每次只能使用一般内存,代价略高。

     改进:新生代对象寿命较短,不需要按照1:1的比例划分内存,因此可以分为一块较大的eden空间和两块较小的survivor。每次只使用eden和一块survivor,回收时,把eden和survivor还存活的对象拷贝到剩下的survivor中,再清理。当还存活的对象大小大于一块survivor的容量时,有时需要借助其他内存(例如老年代)分配。

3)标记整理算法:老年代对象存活率比较高,采用同复制算法时间和空间成本较高,因此在老年代采用标记整理法。先标记再让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

几种垃圾收集器:

     serial:单核单线程,收集过程中必须停止所有线程停掉,适用于clent。新生代收集。

     parnew:serial的多线程版本。新生代收集。

     parallel scavenge:尽可能的提高吞吐量,吞吐量=用户代码时间/(用户代码时间+垃圾收集时间),更高效率利用cpu时间,适合在后台运算而不需要太多交互的任务。

    serial old收集器:单线程,标记整理法。配合parallel scavenge使用。

    parallel old:多线程,标记-整理算法。配合parallel scavenge使用。

    cms:最短回收停顿时间。初始标记--》并发标记--》重新标记--》并发清除

                    缺点:1 、cpu资源好用大,影响吞吐量,默认回收线程数:(cpu数量+3)/4,核心数少时,占用cpu资源多。

                              2、无法处理浮动垃圾,因为并发清除阶段还会有新的垃圾出现。

                              3、标记清楚算法产生大量空间碎片,有事需要给大对象触发一次full gc,并在full gc之后进行碎片整理。                                    可调节。

     g1:标记——整理算法,精确控制停顿。主要措施是极力避免全区域垃圾收集,将整个java堆分为多个区域进行监控。


对象分配与回收策略:

     大多数情况下,对象在新生代Eden区中分配,eden没有足够空间时,发起一次minor gc。

    大对象直接进入老年代。应当尽量避免朝生夕死的大对象。

    长期存活的对象将进入老年代。

    空间分配担保。

名词解释:minor gc:新生代回收。

                 full gc:整个堆空间回收。








© 著作权归作者所有

共有 人打赏支持
李大毛
粉丝 0
博文 15
码字总数 5410
作品 0
杭州
私信 提问
阿里P8架构师总结的互联网Java架构系统化学习路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/83181980 网络应用,最常见的研发语言是Java的和PHP。 后端服务,最常见的...

JAVA高级架构v
10/19
0
0
111 多线程JUC包下代码分析

Java多线程系列目录(共43篇) AtomicLongFieldUpdater:通过反射+CAS实现对传入对象的指定long字段实现类似AtomicLong的操作 http://www.cnblogs.com/skywang12345/p/javathreadscategory.ht...

素雷
2017/10/31
0
0
全新互联网Java后端开发技术思维导图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/82714797 图文里的技术如何学习,有没有免费资料? 对Java的技术,架构技术...

JAVA高级架构v
09/15
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python中sort和sorted函数小结

L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个迭代......

上官夏洛特
30分钟前
1
0
thinkphp 常用SQL执行语句总结

第一条:Db::tablera('vr_panomas')->where(['delete_time'=>0,'id'=>['in',$pids]])->field(['id'=>'id','post_thumb'=>'thumb','post_title'=>'title','post_tags'=>'tags','post_price'=>......

koothon
40分钟前
1
0
支付宝返回状态resultStatus意思

上一篇集成支付宝的时候,会有一些支付宝返回的resultStatus,具体意思是: 9000 订单支付成功 8000 正在处理中 4000 订单支付失败 6001 用户中途取消 6002 网络连接出错 还有memo,意思就是...

RainOrz
44分钟前
1
0
electron webview 页面加载事件顺序

1.did-start-loading 页面开始加载 2.load-commit 主页面文档加载 3.page-title-updated title 4.dom-ready 主页面 dom 加载完成 5.load-commit frame文档加载 6.did-frame-finish-load fram......

dubox
49分钟前
1
0
cron语法格式

Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek...

JavaSon712
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部