IDEA JVM优化 实例

          昨天启动工程,发现占用内存特别多,占用了1个多G,导致系统特别卡,这还只是刚启动呢,什么都没做,我不能忍,卡的人心烦,而且工作 效率也低,所以看是不是能解决掉这个问题?

     首先看看程序中是否有代码问题导致内存吃这么多?通过JDK自带的VisualVM监控,发现都挺正常的,使用的堆常在250M以内,还能接受,但是分配的话,是分配了900M的空间,初步估计应该是初始化的时候撑大的,但没有释放回去,所以决定通过设置JVM参数的方法看是不是能优化一下;

在IDEA中设置JVM启动参数

-Xmx600m                                  最大堆大小

-Xms600m                                  初始堆大小

-Xmn100m                                  年轻代大小

-XX:SurvivorRatio=8                  Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10

-XX:+UseG1GC                              使用 G1 (Garbage First) 垃圾收集器 (因为本地是JDK版本是JDK8,所以启用G1收集器,8以下的可以试用CMS收集器)

-XX:ParallelGCThreads=8                   设置垃圾收集器在并行阶段使用的线程数[一般设置为本机CPU线程数相等,即本机同时可以处理的个数,设置过大也没有用]

-XX:ConcGCThreads=8                       并发垃圾收集器使用的线程数量

-XX:+DisableExplicitGC                    禁止在启动期间显式调用System.gc()

-XX:+HeapDumpOnOutOfMemoryError           OOM时导出堆到文件

-XX:HeapDumpPath=d:/dumps/xxx.dump        导出OOM的路径(此处自定义dump文件路径)

-XX:+PrintGCDetails                       打印GC详细信息

-XX:+PrintGCTimeStamps                    打印CG发生的时间戳

-XX:+PrintHeapAtGC                        每一次GC前和GC后,都打印堆信息

-XX:+TraceClassLoading                    监控类的加载

设置完后再查看内存就基本上稳定在600M左右了,一下少了差不多一半,还是很值得的。这下再也不用担心电脑卡了。。

猜你喜欢

转载自my.oschina.net/u/3187740/blog/1631536