如何设置jar的内存
java -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCacheSize=128m -Xss512k -Xmx2g -Xms2g -XX:+UseG1GC -XX:G1HeapRegionSize=4M -jar your-application.jar
以上配置为堆内存4G
jar项目内存溢出了,怎么看
1、JConsole(bin/自带程序):
运行 jconsole,并连接到你的 Java 应用程序。
在 Memory 选项卡中,你可以查看堆内存的使用情况。
2、jstat:
运行 jstat 工具来查看内存统计信息。例如:
jstat -gc <pid>
其中 是 Java 应用程序的进程 ID。
3、jmap:
使用 jmap 工具来查看详细的内存信息。例如:
jmap -heap <pid>
使用jmap -histo:live [pid] 分析具体的对象数目和占用内存大小,从而定位代码(pid可通过top命令查看)
如何使用jconsole查看远程的jar(springboot服务)
java -Djava.rmi.server.hostname=例如:192.168.110.110 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=例如:1234 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar api-0.0.1-SNAPSHOT.jar
如上你可以在本地jconsole链接远程了,上述配置没有设置密码(你也可以不嫌麻烦的设置一个)
其他优化
java -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -Xss512k -Xmx4g -Xms4g -XX:+UseG1GC -jar your-application.jar
-
Metaspace是用来存放类元数据的空间。
根据你的实际类加载需求调整 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize。 -
线程栈大小:
-Xss512k: 如果你的应用创建了大量线程且栈消耗不大,这个值是合理的。如果需要更多栈空间,可以调整。 -
堆内存设置:
-Xmx 和 -Xms: 根据你的应用实际需要进行调整。8GB的服务器可以将堆内存设为更大一些,但要保证其他系统进程有足够的内存使用。 -
垃圾收集器:
-XX:+UseG1GC: G1GC是适用于低延迟场景的良好选择。如果你的应用对暂停时间非常敏感,这是一个好选择。