优化
在进行JVM调优时,可以采取以下策略:
- 适当调大metaspace的空间大小。
- 优化不合理的反射调用,例如使用mapstruct替换BeanUtils.copyProperties等属性拷贝工具类。
在具体操作中,如果遇到CPU占用过高的问题,需要分情况讨论。如果是因为业务活动导致的大量流量涌入,且活动结束后CPU占用率下降,这通常是正常现象。但如果CPU占用率长期过高,可能是程序中存在循环次数过多的代码,甚至可能是死循环。排查步骤包括:
- 使用top命令查看CPU占用情况,定位到占用CPU的进程。
- 使用top -Hp命令查看线程情况,确定占用CPU的线程ID。
- 将线程号转换为16进制。
- 使用jstack工具查看线程栈情况,找到具体占用CPU的代码位置。
此外,还可以使用arthas进行反编译,查看具体的反射代码,进一步优化反射调用以提高性