调优案例
设置堆内存: -Xmx2048m -Xms512m
设置元空间大小 -XX:MetaspaceSize=2048m -XX:MaxMetaspaceSize=2048m
设置内存溢出时自动生成 dump 文件: -XX:+HeapDumpOnOutOfMemoryError
JVM
大量线程阻塞
- 获取到 Connection 对象之后,将 setAutoCommit(false), 在使用完毕之后,没有将 autoCommit 设置回 false。
- 持有了线程不安全的对象。
内存溢出
- 部分内存长期持有不释放,导致内存溢出,导出时未清理应该及时释放的对象。
- progressDefault 内部维护了一个 list 来存储日志,业务要求数据不能终止,做了定时心跳并无限重试的处理,导致 progressDefault 的 list 对象无限增长,导致内存溢出。
- 解析超大的 json 文件。
IRPT-16677:在循环内部创建了表元对象导致 jvm 内对象剧增,不能及时销毁,将对象在外层声明即可。
SQL
- 连接未释放
- 过度使用临时表