文档章节

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
杭州
111 多线程JUC包下代码分析

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

素雷
2017/10/31
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
通过JDBC进行简单的增删改查(以MySQL为例)

前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4...

Airship
2015/07/13
0
0
Java培训实战教程之Java基础知识精华部分(一)(二)(三)

Java培训实战教程之Java基础知识精华部分(一)_java概述 =============================================================================Java培训实战教程之Java基础知识精华部分(一)_java概...

黑泽明军
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部