drools规则引擎非堆内存(方法区)溢出被系统杀死引起的祸

最近使用规则引擎drools,分配的内存比较一般,但是数据的并发量比较大,系统上线后总是运行不到一天,被系统杀死,将打印dump的启动参数配置上之后,也没有生成对应的dump文件,让我比较尴尬。深入研究了JVM和操作系统杀死JVM的原因,最终分析出来几点原因,并进行分享下。

首先:先将JVM的组成部分,及每部分存放的内容进行研究了一遍:参考:

https://blog.csdn.net/taohuaxinmu123/article/details/24472073,

https://blog.csdn.net/u010663871/article/details/73603460    不限于这两篇文章。

其次:了解启动jar命令行参数,为java堆内存、栈内存、生成GC垃圾回收日志,OOM时JVM生成dump日志的命令行参数搞定

再次:通过jmap ,jstack等命令查看JVM相关的堆栈大小,及相关的信息

最后:借助监控工具,进行分析系统宕机时堆栈相关大小等

 

通过以上过程,开始参考如下分析drools:

https://www.iteye.com/blog/rednaxelafx-548536

https://blog.csdn.net/adorechen/article/details/89473543   Drools insert fact 引起的内存溢出

https://blog.csdn.net/iteye_19891/article/details/81799364  drools内存泄露问题排查分析

https://blog.csdn.net/wwwcomy/article/details/84658127 Drools引发的PermGen OOM异常的跟踪

SoftRefLRUPolicyMSPerMB 软连接

https://blog.csdn.net/maangming/article/details/79837245

 

 

 

 

 

 

你可能感兴趣的:(架构)