IDEA JVM優化 實例

          昨天啓動工程,發現佔用內存特別多,佔用了1個多G,致使系統特別卡,這還只是剛啓動呢,什麼都沒作,我不能忍,卡的人心煩,並且工做 效率也低,因此看是否是能解決掉這個問題?併發

 

 

     首先看看程序中是否有代碼問題致使內存吃這麼多?經過JDK自帶的VisualVM監控,發現都挺正常的,使用的堆常在250M之內,還能接受,可是分配的話,是分配了900M的空間,初步估計應該是初始化的時候撐大的,但沒有釋放回去,因此決定經過設置JVM參數的方法看是否是能優化一下;優化

 

 

在IDEA中設置JVM啓動參數線程

 

 

 

-Xmx600m                                  最大堆大小內存

-Xms600m                                  初始堆大小ci

-Xmn100m                                  年輕代大小it

-XX:SurvivorRatio=8                  Eden區與Survivor區的大小比值,設置爲8,則兩個Survivor區與一個Eden區的比值爲2:8,一個Survivor區佔整個年輕代的1/10io

-XX:+UseG1GC                              使用 G1 (Garbage First) 垃圾收集器 (由於本地是JDK版本是JDK8,因此啓用G1收集器,8如下的能夠試用CMS收集器)效率

-XX:ParallelGCThreads=8                   設置垃圾收集器在並行階段使用的線程數[通常設置爲本機CPU線程數相等,即本機同時能夠處理的個數,設置過大也沒有用]監控

-XX:ConcGCThreads=8                       併發垃圾收集器使用的線程數量gc

-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左右了,一下少了差很少一半,仍是很值得的。這下不再用擔憂電腦卡了。。

 

相關文章
相關標籤/搜索