太多 AS 卡慢停当问题,怒发 jvm 参数,此良药有点毒,服用前请看注解选择服用.

2015-11-06 22:17:35 +08:00
 mko0okmko0
依照使用环境肯定不会每个人都一样快,优化后比原来更慢的请不要喷,但欢迎讨论可能的原因.
studio(64).exe.vmoptions:-da 之前的参数改成以下(去除含#后的注解和空行):
-server #先调到 server 模式,很多预设参数直接优化了,启动稍慢但资源消耗有比较好.
#我喜欢先设小,然后依需求消耗 ram,并设定回收百分比参数提早回收.一开始就大,你的 ram 肯定回收不了,设小才有回收机会
-Xms4m #设多小能正常用就设多小,反正都是省 ram.
-Xmx1280m #一个 jvm 最多消耗的 ram,实际消耗还要加上 Perm
-Xss256k #设多小能正常用就设多小,反正都是省 ram.
-XX:+AggressiveOpts #开启官方激进优化
-XX:PermSize=8m #设多小能正常用就设多小,反正都是省 ram.
-XX:+UseG1GC #我喜欢不分新旧带的混合回收管理.用 AggressiveOpts 才有,大家依照自己喜欢的选 cms 爆发回收或是并行回收
-XX:+UseStringDeduplication #G1GC 送的字串重复空间回收,据说省 80%重复字串资源.
-XX:MaxHeapFreeRatio=40 #提早回收延迟分配 ram
-XX:MinHeapFreeRatio=30 #提早回收延迟分配 ram
-XX:MaxGCPauseMillis=200 #每次回收 ram 的时间不要超过 0.2 秒,避免卡,但会增加顿的机会,用顿换不卡
-XX:GCTimeRatio=4 #用 1/(1+4)=20%的 CPU 资源处理回收 ram 的消耗,预设是 1/(1+19)=5%所以预设的回收很慢,多给他 CPU 资源换取 ram.反正 cpu 很少用满.
-XX:G1ReservePercent=25 #G1GC 回收参数.看官方说明按喜好调整.
-XX:InitiatingHeapOccupancyPercent=0 #G1GC 一直标记可回收 ram.我喜欢持续回收.用顿换不卡
-XX:+ScavengeBeforeFullGC #回收卡死之前尝试再次局部回收.用顿换不卡
-XX:+DoEscapeAnalysis #分析优化,没啥感觉.
#优化执行过程产生的 BIN.
-XX:+UseFastAccessorMethods
-XX:+UseFastEmptyMethods
-XX:+UseFastJNIAccessors

-XX:UseAVX=2 #不加这个买赛扬算了,浪费好 CPU,=2:当你有小于 2 的 AVX 或是没有会自动降级和停用,所以加了也没差.
-XX:UseSSE=5 #不加这个买赛扬算了,浪费好 CPU,=5:当你有小于 5 的(s)sse 或是没有会自动降级和停用,所以加了也没差.不能大于 5 会出错.
-XX:+UseSSE42Intrinsics #不加这个买赛扬算了,浪费好 CPU,上面的不能启动 sse4.2.要这条.
#都是动态化使用资源,用顿换不卡
-XX:+UseTLAB
-XX:+ResizeTLAB
-XX:+UseAdaptiveGCBoundary
-XX:+UseAdaptiveSizePolicy

-XX:CompileThreshold=8000 #-server 后有效,当 jvm 用脚本模式执行某程式某段几次后转成原生 BIN,次数将影响产生的 BIN 品质,越小越差但越快完成,经大量测试,8000 之后的数字优化结果几乎同等 8000 所以是 8000 次后转 BIN.
-XX:+TieredCompilation #当转 BIN 之后再次执行 8000 次后转第 2 次,终极优化 BIN.
-XX:+BackgroundCompilation #转 BIN 的时候用最低优先权的背景线程去转,让你的桌面工作顺畅.

studio.vmoptions 也是以上内容

甚至环境参数 java_opts 也设,这样 jvm 启动时有发现 java_opts,就会以该内容的参数来启动 java,让所有 java 都能优化,但有些 JAVA 会跟以上部分参数冲突,导致无法启动,所以可以开小以点:
java_opts= -Xms4m -Xss384k -XX:PermSize=8m -XX:+AggressiveOpts -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=30 -XX:MaxGCPauseMillis=200 -XX:GCTimeRatio=4 -XX:+ScavengeBeforeFullGC -XX:+UseFastAccessorMethods -XX:+UseFastEmptyMethods -XX:+UseFastJNIAccessors -XX:UseAVX=2 -XX:UseSSE=5 -XX:+UseSSE42Intrinsics -XX:+UseTLAB -XX:+ResizeTLAB -XX:+UseAdaptiveGCBoundary -XX:+UseAdaptiveSizePolicy -XX:CompileThreshold=8000 -XX:+TieredCompilation -XX:+BackgroundCompilation
6052 次点击
所在节点    Android
6 条回复
halou12
2015-11-06 22:27:40 +08:00
战略马克
lyz1990
2015-11-06 22:40:56 +08:00
不卡的表示淡定 233
kaedea
2015-11-06 22:42:56 +08:00
…… 上了三星的 SSD+16GDDR3 后,很久没有这些烦恼了
顺便说一下 我的电脑是 12 年的普通笔记本
dezng
2015-11-10 09:37:50 +08:00
:)
试一下,看效果怎么样
dezng
2015-11-10 11:43:06 +08:00
注释掉此配置文件中的
-XX:+UseStringDeduplication
原有配置文件中的
-XX:+UseConcMarkSweepGC

以前开两份源码会卡,现在不卡了,用久一点看怎么样。
mko0okmko0
2015-11-10 17:54:07 +08:00
我为了说清楚一些参数结果边查边实验,又改进了参数表,但我不会修改文章,所以发到 JAVA 区了:
https://www.v2ex.com/t/235137#reply0
请大家前往此篇讨论.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX