JVM調優

JVM參數配置

JVM提供了諸多的參數進行JVM各個方面內存大小的設置,爲Java應用進行優化提供了諸多的工具,本文將會詳細分析各個參數的功能與使用。java

常見參數配置

-XX:+PrintGC      每次觸發GC的時候打印相關日誌服務器

-XX:+UseSerialGC      串行回收多線程

-XX:+PrintGCDetails  更詳細的GC日誌jvm

-Xms               堆初始值工具

-Xmx               堆最大可用值性能

-Xmn               新生代堆最大可用值測試

-XX:SurvivorRatio  用來設置新生代中eden空間和from/to空間的比例.優化

-XX:NewRatio       配置新生代與老年代佔比 1:2spa

含以-XX:SurvivorRatio=eden/from=den/to線程

總結:在實際工做中,咱們能夠直接將初始的堆大小與最大堆大小相等,

這樣的好處是能夠減小程序運行時垃圾回收次數,從而提升效率。

-XX:SurvivorRatio     用來設置新生代中eden空間和from/to空間的比例.

 

堆溢出:java.lang.OutOfMemoryError:java heap space 堆內存溢出 緣由:內存不足 解決方法:JVM參數增大內存

垃圾回收基本原則:內存不足的時候去回收,內存若是足夠,暫時不會回收。減小回收次數與回收時間(回收影響系統性能)

棧溢出:java.lang.StackOverflowError 遞歸調用會發生 解決方法:設置線程最大調用深度 -Xss5m

內存泄露、內存溢出區別:

內存溢出,是在 申請 內存空間時,超出最大堆內存空間。

內存泄露,使用由於內存空間沒有及時的釋放(不收垃圾回收器控制),長時間致使佔用內存,最終致使內存溢出(太多static致使,IO流沒有關閉)。

垃圾收集器:

並行回收與串行回收區別:多線程與單線程(服務器通常都是並行接收)

cms收集器:

jmeter壓力測試工具:

jvm調優原則:一、減小垃圾回收次數 二、老年代空間大於新生代內存空間

調優:堆的初始值和堆的最大值最好一致(初始值過小會致使頻繁的垃圾回收)

垃圾回收機制次數和最大堆內存沒有關係,和初始堆內存有關係,最大內存作申請內存,核心仍是初始內存

相關文章
相關標籤/搜索