垃圾回收器是垃圾回收算法的实现,Java虚拟机的设计者为了

获取最大的性价比,也在不断改进中。硬件在不断变化,多核

的普及,基于单核的收集器应该已经没有太大意义了。Java7中

又新增了g1收集器,没具体研究,【不明觉厉】啊。

暂时觉得垃圾器的细节不用深入研究,性能问题卡到垃圾收集,应该

考虑的是编写的程序质量而不是垃圾回收的性能。

下面介绍垃圾回收的一些原则:

(1) 对象先在eden上分配。

如果eden上剩余空间无法容纳新建立的

对象,则发起一次新生代的垃圾回收。过程是把eden和survivor from

上存活的对象放入survivor to上,之后清理eden和survivor区域。当然,

原来的survivor from变成了survivor to区域,而survivor to变成了

survivor  from区域。

(2)大对象直接进入老生代。

如果有些大对象一直在新生代中用复制

算法拷贝来拷贝去,也是很大的性能浪费,索性不如直接扔到老生代

侯着。(老生代没有新生代垃圾回收的那么频繁,当然老生代收集一次

的花销要远远大于新生代)

虚拟机提供了参数,可以控制大对象的阀值。这样只要大于所配置

的阀值,自动把对象分配到老生代上。

个人认为大对象者,因为需要连续空间应该只要发生在大数组情况下。

ArrayList的底层实现也是数组,这个需要注意。当然也不排除有人把

一个类中写了n多属性,光引用或者基本类型就构成一个大对象,这个

应该很少见。

书上没写虚拟机默认的大对象阀值是多少,亦或如果不手动加入这个

限制,虚拟机是不设上限的?

(3)长期存活对象进入老生代。

有些对象一直存活不能被回收,但是新生代每次垃圾回收都能容纳这种

对象,这样会造成复制的性能浪费。所以,虚拟机给每个对象设了对象

年龄这么个属性,好像这个值是存在对象头中的。对象新生成时,年龄

设为一,之后在每次新生代的收集中如果能躲过一劫,则年龄加一。

虚拟机的默认阀值是15,当一个对象的年龄大于15,将被请如

老生代名人堂。这个阀值可以设置。

(4)动态对象年龄判定   虚拟机有一个策略,如果survivor

中相同年龄的所有对象的大小的总和大于survivor空间的一半,

年龄大于或者等于该年龄的对象就可以直接进入老年代,无须

等到maxtenuringthreshold中要求的年龄。

策略明白,但是好处是什么?作者没举例,我自己想了几个

例子,不一会又被自己推翻了,姑且相信实现虚拟机垃圾回收的

高手。因为是高手啊!

(5)空间分配担保

在发生新生代minor   gc时,虚拟机会检测之前每次晋升到老

生代的平均大小是否大于老生代的剩余空间大小。如果大于,

则改为直接进行一次老生代full   gc。如果小于,则查看担保设置

是否允许失败,如不允许则会伴随一次full   gc。

为避免full  gc过于频繁,担保失败开关一般是打开的。

取平均值比较是动态概率的手段,并不能保证担保不失败。

担保失败后,仍然需要进行一次   full   gc。

作者说担保失败后在full  gc绕的圈子是最大的,但是我

不甚明白,同样是进行一次full  gc,时机的不同会造成

效率的不同?这个问题有机会再查。

后面这两点作者只是给出了,这种情况出现的例子,但是

没有说出这样做的好处,感觉有点应付(^_^)

《深入理解Java虚拟机》笔记4的更多相关文章

  1. 《Netlogo多主体建模入门》笔记8

    8 -GINI系数计算与 如何使用行为空间做实验     首先,我们加入保底机制. 对于每一个agent,都有一个随机的保底比例 s(每个agent的 s 不都一样,且s初始化之后不会改变) 进行交易 ...

  2. 《Netlogo多主体建模入门》笔记 2

    从自带的模型库开始     财富分配模型 黄色代表稻谷,有的人消化快,有的慢,稻谷的积累代表财富的积累,不涉及交易行为.   点击setup后 ,点击 go   红线--穷人: 绿线-- 中产 : 蓝 ...

  3. 《Netlogo多主体建模入门》笔记4

    4- 从Langton的蚂蚁看Turtle与Patch的交互   这只蚂蚁从10000步开始,就会自发地 “建桥”     Turtle与Patch就好比是,一个方块和一个格子的关系. 一个格子上可以 ...

  4. 《Netlogo多主体建模入门》笔记3

    3- 用“生命游戏”认识Patch     代码:   patches-own[living] to setup clear-all ask patches [ < 0.3[ set pcolo ...

  5. 每天成长一点---WEB前端学习入门笔记

    WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...

  6. ES6入门笔记

    ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...

  7. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  8. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  9. redis入门笔记(2)

    redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...

  10. redis入门笔记(1)

    redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...

随机推荐

  1. WordPress固定链接设置的几种方法(推荐/%post_id%.html)

    传说中,固定链接有SEO功能,今天试了试,现在给大家分享一下: wordpress固定链接设置技巧: 1.不要让日期出现在固定链接里面 这基于两个方面的考虑.一是如果数字出现在固定链接里面,等于提醒搜 ...

  2. NOI2014 起床困难综合症 day1t1

    感觉NOI题在向简单方向发展,或者说明年会难到暴呢? 直接模拟啊,枚举每个二进制数位,看经过变换之后是否为1及为1的条件即可.\( O(nlogm)\). 然后...跪了一个点,第五个死活比标准大一. ...

  3. windows10 自带的OpenSSH Client(Beta)

    我不知道其他版本有没有 ,我是windows10 专业版,版本1709,OS内部版本16288.1 安装过程: 1.我的电脑上面的卸载或更改程序 2.管理可选功能 3.添加功能 4.重启电脑,搞定 O ...

  4. 前端读者 | Javascript设计模式理论与实战:状态模式

    本文来自 @狼狼的蓝胖子:链接:http://luopq.com/2015/11/25/design-pattern-state/ 在软件开发中,很大部分时候就是操作数据,而不同数据下展示的结果我们将 ...

  5. CentOS 7.4 下安装 Nginx

    CentOS 7.4 下安装 Nginx 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. ...

  6. 洛谷P2224 [HNOI2001] 产品加工 [DP补完计划,背包]

    题目传送门 产品加工 题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时 ...

  7. A - Chinese Girls' Amusement ZOJ - 2313(大数)

    You must have heard that the Chinese culture is quite different from that of Europe or Russia. So so ...

  8. JZYZOJ1527 [haoi2012]高速公路 线段树 期望

    http://172.20.6.3/Problem_Show.asp?id=1527 日常线段树的pushdown写挂,果然每次写都想得不全面,以后要注意啊……求期望部分也不熟练,和平均数搞混也是or ...

  9. [Agc008F]Black Radius

    [AGC008F] Black Radius Description 给你一棵有N个节点的树,节点编号为1到N,所有边的长度都为1 "全"对某些节点情有独钟,这些他喜欢的节点的信息 ...

  10. 浙南联合训练赛 D - Broken Clock

    You are given a broken clock. You know, that it is supposed to show time in 12- or 24-hours HH:MM fo ...