跳到主要内容

调优案例

设置堆内存: -Xmx2048m -Xms512m

设置元空间大小 -XX:MetaspaceSize=2048m -XX:MaxMetaspaceSize=2048m

设置内存溢出时自动生成 dump 文件: -XX:+HeapDumpOnOutOfMemoryError

JVM

大量线程阻塞

  1. 获取到 Connection 对象之后,将 setAutoCommit(false), 在使用完毕之后,没有将 autoCommit 设置回 false。
  2. 持有了线程不安全的对象。

内存溢出

  1. 部分内存长期持有不释放,导致内存溢出,导出时未清理应该及时释放的对象。
  2. progressDefault 内部维护了一个 list 来存储日志,业务要求数据不能终止,做了定时心跳并无限重试的处理,导致 progressDefault 的 list 对象无限增长,导致内存溢出。
  3. 解析超大的 json 文件。

IRPT-16677:在循环内部创建了表元对象导致 jvm 内对象剧增,不能及时销毁,将对象在外层声明即可。

SQL

  1. 连接未释放
  2. 过度使用临时表