依照使用环境肯定不会每个人都一样快,优化后比原来更慢的请不要喷,但欢迎讨论可能的原因.
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