今天在使用idea的时候,配置堆的大小的时候总是不起作用,然后特意复习了一下JVM的内存结构,最后发现居然是IDEA的问题。
工具:IDEA版本2020.3、jvisualvm(最好装上 visual GC,没有可以使用jdk自带的jmap -heap代替)
设置堆的大小为2G
将老年代、年轻代、s0的内存加在一起,发现根本没有2G
打开这行执行命令,将它复制,放在终端中执行
放到终端执行
/home/xxx/data/jdk1.8/bin/java /qyt/work/vmDemo/target/classes com.qyt.testDemo5 -Xms2048m
这里可以用JDK自带的jmap命令去查看内存情况,首先要将终端的目录切换到jdk/bin下
# ./jmap -heap pid
./jmap -heap 98
Attaching to process ID 11461, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.281-b09
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 22282240 (21.25MB)
MaxNewSize = 357826560 (341.25MB)
OldSize = 44826624 (42.75MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 16777216 (16.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 4294963200 (4095.99609375MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 17039360 (16.25MB)
used = 3081440 (2.938690185546875MB)
free = 13957920 (13.311309814453125MB)
18.084247295673077% used
From Space:
capacity = 2621440 (2.5MB)
used = 0 (0.0MB)
free = 2621440 (2.5MB)
0.0% used
To Space:
capacity = 2621440 (2.5MB)
used = 0 (0.0MB)
free = 2621440 (2.5MB)
0.0% used
PS Old Generation
capacity = 44826624 (42.75MB)
used = 0 (0.0MB)
free = 44826624 (42.75MB)
0.0% used
2264 interned Strings occupying 132680 bytes.
发现将命令放到终端跑,堆的内存大小也没有变
最后将命令改成了,发现居然成功了。。。
/home/xxx/data/jdk1.8/bin/java -Xms2048m /qyt/work/vmDemo/target/classes com.qyt.testDemo5
总结堆的参数要放在class文件之前,而不是之后