读Java性能权威指南(第2版)笔记16_垃圾回收C

读Java性能权威指南(第2版)笔记16_垃圾回收C

1.调整堆的大小

1.1.随着堆的大小增加,停顿的持续时间也会增加

1.2.停顿发生的频率确实会降低,但是停顿的持续时间会拖慢整体性能

1.3.操作系统进行的交换对JVM是不公开的

1.3.1.操作系统要将数据从磁盘交换到RAM,这是一个代价高昂的操作

1.4.首要规则是设定堆的大小永远不要超过机器的物理内存

1.4.1.如果有多个JVM在运行,那么这适用于所有堆的总和

1.5.-XmsN标志

1.5.1.初始值

1.6.-XmxN标志

1.6.1.最大值

1.7.默认值

1.7.2.在物理内存小于192 MB的机器上,堆的最大值会是物理内存的一半(96 MB或更少)

1.8.如果JVM发现堆在初始大小时,GC的次数太多,它就会不断地增加堆大小,直到JVM执行的GC数量“适当”,或者直到堆大小达到最大值

1.9.对于不需要堆很大的应用程序来说,根本不需要设置堆的大小,只需要设定GC算法的性能目标

1.10.除非应用程序需要比默认值更大的堆,否则优化时可以调整GC算法的性能目标而不是微调堆的大小

1.11.一个有效的经验是,调整堆的大小,让其在Full GC之后,仍然被占用30%

1.11.1.用jconsole连接应用程序,强制执行Full GC,并观察当Full GC完成后有多少内存被占用

1.11.2.确保它有额外的0.5 GB~1 GB内存来满足JVM的非堆需求

1.12.当JVM运行在隔离容器中时,你需要设定堆的最大值

1.13.确切地知道应用程序需要多大的堆,那么不妨将初始值和最大值都设置为该值

1.13.1.因为GC不再需要弄清楚是否应该调整堆大小,稍微高效一点

2.调整分代大小

2.1.新生代相对较大

2.1.1.Young GC的停顿时间会增加

2.1.2.新生代的回收频率会降低

2.1.3.晋升到老年代的对象也会更少

2.1.4.老年代相对会更小

2.1.4.1.被填满的频率会更高

2.1.4.2.会执行更多的Full GC

2.2.优化分代大小的命令行标志,调整的都是新生代的大小,老年代自动得到剩余的所有空间

2.3.-XX:NewRatio=N

2.3.1.设置新生代与老年代的比例

2.3.2.新生代初始大小=堆的初始大小/(1 +NewRatio)

2.3.3.默认值是2

2.3.3.1.新生代的初始大小是堆初始大小的33%

2.3.4.如果应用程序会动态调整堆大小,并且需要更大的(或更小的)新生代,那就重点设置NewRatio的值

2.4.-XX:NewSize=N

2.4.1.设置新生代的初始值

2.4.2.设置了该选项,那么它将优先于通过NewRatio计算出来的值

2.4.3.没有默认值

2.4.3.1.默认情况下这个值会通过NewRatio计算出来

2.5.-XX:MaxNewSize=N

2.5.1.设置新生代的最大值

2.5.2.通过设定新生代的最小值和最大值来进行优化是十分困难的

2.6.-XmnN

2.6.1.将NewSize和MaxNewSize设置为同一个值的简单写法

2.6.2.如果堆的大小是固定的(通过设置-Xms等于-Xmx),通常最好也用-Xmn将新生代大小设为固定的

2.7.自适应大小

2.7.1.一般应该保持开启

2.7.1.1.因为GC算法会通过调整代的大小,来尽量满足它们停顿时间的目标

2.7.1.2.控制着JVM改变堆内新生代和老年代比例的方式

2.7.2.关闭-XX:-UseAdaptiveSizePolicy标志

2.7.2.1.默认值为true

2.7.3.如果堆的最小值和最大值设置为相同的值,并且新生代的初始值和最大值也设为相同的值,那么自适应大小实际上就被关闭了

2.7.4.如果你想将其中某个阶段的GC优化到最佳状态,禁用自适应大小很有用

2.7.5.对于精细优化过的堆,禁用自适应大小能小幅提升性能

2.7.6.开启-XX:+PrintAdaptiveSizePolicy标志

2.7.6.1.查看JVM是如何调整应用程序内空间大小

2.7.6.2.执行GC时,GC日志里会包含回收过程中各个代是如何调整大小的详细信息

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容