內存泄露是指你的應用使用資源以後沒有及時釋放,致使應用內存中持有了不須要的資源,這是一種狀態描述;java
內存溢出是指你應用的內存已經不能知足正常使用了,堆棧已經達到系統設置的最大值,進而致使崩潰,這事一種結果描述;windows
一般都是因爲內存泄露致使堆棧內存不斷增大,從而引起內存溢出。測試
在利用jmeter測試過程當中,若是內存溢出的話,通常會出現這個提示:java.lang.OutOfMemoryError: Java heap space:意思就是堆內存溢出,不夠用了spa
windows環境下,修改jmeter.bat:
set HEAP=-Xms512m -Xmx4000m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=1024m
改成:
set HEAP=-Xms256m -Xmx8192m內存
## HEAP:表示堆內存總空間爲8G資源
set NEW=-XX:NewSize=1330m -XX:MaxNewSize=3072m -XX:NewRatio=2 -XX:SurvivorRatio=8io
## NewSize:表示新生代的內存空間jdk
## NewRatio:表示新生代和老年代的比例。此處新生代:老年代=1:2內存泄漏
## SurvivorRatio:表示伊甸園和space的比例。此處伊甸園:space=8:2內存泄露
set PERM=-XX:PermSize=1024m -XX:MaxPermSize=1024m
## PERM:表示持久代的內存空間,可是jdk1.8以後取消了持久代,改爲了元空間
heap最多設置爲物理內存的一半,默認設置爲512M.若是heap超過物理內存的一半,可能運行jmeter會慢,甚至出現內存溢出,緣由java比較吃內存
如何查看本機JDK的位數?
CMD下執行 java -version