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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章