内存泄露是指你的应用使用资源以后没有及时释放,致使应用内存中持有了不须要的资源,这是一种状态描述;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