启用JMS进行监控采集数据
java -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dspring.profiles.active=dev -jar xxx.jar
使用JDK的工具进行分析
- jstat
- jmap
- jconsole
- jvisualVM (强烈推荐)
应用层面防止内存泄露
- 对流操作的操作结束的时候需要关闭
- 对象交由spring创建,生命周期交由spring来接管
- 关于加密功能内存泄露的解决方式:
//声明bouncyCastleProvider
private static BouncyCastleProvider bouncyCastleProvider = new BouncyCastleProvider();
//add的时候直接添加
Security.addProvider(bouncyCastleProvider);
//反例,使用new BouncyCastleProvider() 会不断创建新的对象jvm无法回收导致OOM
Security.addProvider(new BouncyCastleProvider());
网友评论