文档章节

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
杭州
私信 提问
给大家分享一个JAVA技术大牛的课程笔记

目前,Java语言已经广泛应用于生活中的各个领域,无论是网络编程还是数据库编程,甚至是web开发都有Java语言的身影 很多小伙伴想学习java却布置从何学起,现在给大家分享一个JAVA大神课程笔记...

dadaxiaoxiao
2015/12/31
304
1
111 多线程JUC包下代码分析

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

素雷
2017/10/31
0
0
阿里P8架构师总结的互联网Java架构系统化学习路线

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

JAVA高级架构v
10/19
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

没有更多内容

加载失败,请刷新页面

加载更多

GROUP BY GROUPING SETS

GROUPING SETS 子句是 SELECT 语句的 GROUP BY 子句的扩展。通过 GROUPING SETS 子句,您可采用多种方式对结果分组,而不必使用多个 SELECT 语句来实现这一目的。这就意味着,能够减少响应时...

hblt-j
12分钟前
0
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
17分钟前
0
0
adb命令启动展讯平台工厂模式

adb命令启动展讯工厂模式: adb shell am start com.sprd.engineermode/com.sprd.engineermode.EngineerModeActivity...

东街小霸王
18分钟前
0
0
mtu值怎样设置才网速最快

一、什么是 MTU 值 1 从字面上来说,MTU 是英文 Maximum Transmission Unit 的缩写,即最大传输单元,它的单位是字节。 在我们常用的以太网中,MTU 一般是 1500,而无线路由器默认一般是 14...

Clarence_D
36分钟前
1
0
McAfee阻止邮件发送功能

自己写的邮件发送功能,在本地机器上可以发送,但是放到服务器上面之后就不能发送了,捕获到的异常是“以一个访问权限不允许的方式做了一个访问套接字的尝试”,找了很久,终于发现是被McAfe...

壹峰
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部