背景:调研平台 供内部查询资料和文献等#
正式环境报错,显示 oom-Java heap space ,先是检查了有没有创建大对象或者是递归的代码,然后适当扩大下内存。打开任意的 pdf 都失败,可能是内存没有释放(怀疑读 pdf 的工具有 bug) 用 jconsole 来看了一下程序执行时候的内存变化情况,内存是一致在增加的,本地分析一直在创建对象。分析堆内存快照,(XX:+HeapDumpOnOutOfMemoryError 堆内存溢出时的快照 后面可以加路径), 初步分析是持续调用生成字体字体对象的接口,也就是持续创建了字体对象。
找到源头就好办了,找到该接口持续创建对象的代码,应该是提出去做一个静态变量,而不是每次都在静态函数里面 new
ps: 第一次生产上遇见堆内存溢出,也是蛮兴奋的。 (只不过编辑的格式太烂了,还是得练练这方面)