JDK8之后把-XX:PermSize和-XX:MaxPermGen移除了,取而代之的是XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小)
JDK 8开始把类的元数据放到本地化的堆内存(native heap)中,这一块区域就叫Metaspace,中文名叫元空间。
使用-XX:MaxMetaspaceSize参数来指定Metaspace区域的大小
未设置JVM参数的情况

看一下堆栈分配:很明显默认的最大堆内存分配了8个G。很明显的不合理嘛。

设置JVM参数
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC1
方式一:IDEA等开发工具

设置成功,我的GC日志和堆栈分配都已经OK了。
GC日志:

堆栈分配

方式二:在项目部署后,在启动的时候,采用脚本或者命令行运行的时候设置
先在项目路径下清理旧项目

给项目打包:打包新项目
mvn package -Dmaven.test.skip=true
打包完成后进入可运行Jar包的路径下:

执行启动设置Jvm参数的操作
java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC newframe-1.0.0.jar
再看监控

![[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)](https://img-blog.csdnimg.cn/direct/a25d17ccb3bd424f8e88d47e6ea67e8d.png)


















