配置介绍
神舟笔记本 I7-3610QM+8G+240SSD+500G
模仿
使用JAVA开发的著名软件有两个Eclipse
和Idea
,我们从此剖析
Idea 2017
JVM参数如下
-Server
运行模式
虚拟机在解释执行相对应的另一方面,虚拟机还有力度更强的编译器:当虚拟机运行在客户端模式是使用C1轻量级,服务端是C2重量级。显而易见,重量级会消耗更多的系统资源但是带来更强的性能。如果大家像我一样系统资源足够且长时间使用编译软件推荐是用C2-Xms
-Xmx
堆初始值128m 最大750m
计算 最大值为不超过系统1/4ReservedCodeCacheSize
保留代码所用的Cache大小UseConcMarkSweepGC
-XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。XX:SoftRefLRUPolicyMSPerMB
-XX:SoftRefLRUPolicyMSPerMB=N 这个参数比较有用的,官方解释是:Soft reference在虚拟机中比在客户集中存活的更长一些。其清除频率可以用命令行参数 -XX:SoftRefLRUPolicyMSPerMB=<N>来控制,这可以指定每兆堆空闲空间的 soft reference 保持存活(一旦它不强可达了)的毫秒数,这意味着每兆堆中的空闲空间中的 soft reference 会(在最后一个强引用被回收之后)存活1秒钟。注意,这是一个近似的值,因为 soft reference 只会在垃圾回收时才会被清除,而垃圾回收并不总在发生。系统默认为一秒,我觉得没必要等1秒,客户集中不用就立刻清除,改为 -XX:SoftRefLRUPolicyMSPerMB=0;ea
-ea[:<package name>"..." | :<class name> ]
上述参数就用来设置jvm是否启动断言机制(从JDK 1.4开始支持),缺省时jvm关闭断言机制。
用-ea 可打开断言机制,不加<packagename>和classname时运行所有包和类中的断言,如果希望只运行某些包或类中的断言,可将包名或类名加到-ea之后。例如要启动包com.wombat.fruitbat中的断言,可用命令java -ea:com.wombat.fruitbat...<Main Class>。useCanonCaches
使用标准IO缓存preferIPv4Stack
优先使用IPv4栈HeapDumpOnOutOfMemoryError
堆内存溢出输出OmitStackTraceInFastThrow
开启追踪
Eclipse
前面是使用了一些插件可以忽略
Diff
默认使用了G1收集器
Eclipse更使用更多内存
在使用G1垃圾回收器的时候,通过 JVM参数 -XX:+UseStringDeduplication 。 我们可以通过删除重复的字符串,只保留一个char[]来优化堆内存。这个选择在Java 8 u 20被引入