weblogic out of space in CodeCache for adapters导致宕机

   weblogic会莫名的宕机,宕机日志跟以往的不同:

   Caused By: java.lang.VirtualMachineError: out of space in CodeCache for adapters

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at net.sf.jasperreports.engine.fill.JREvaluator.init(JREvaluator.java:88)
at net.sf.jasperreports.engine.fill.JRCalculator.init(JRCalculator.java:111)
at net.sf.jasperreports.engine.fill.JRFillDataset.initCalculator(JRFillDataset.java:469)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:529)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:55)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
at com.gg.datareport.reportform.appservice.impl.JRService.getJasperPrint(JRService.java:1017)

at com.gg.datareport.reportform.appservice.impl.JRService.reportHTMLByTemplToResp(JRService.java:1123)

    代码缓存区满,原因是第三方报表工具用到了groovy,动态生成了很多类,网络上解释为:

    Code Cache用满一方面是因为空间可能不够用,另一方面是Code Cache是不会回收的,所以会累积的越来越多(其实在不采用groovy这种动态更新/装载class的情况下的话,是不会太多的),所以解法一可以是增大code cache的size,可通过在启动参数上增加-XX:ReservedCodeCacheSize=256m(Oracle JVM Team那边也是推荐把code cache调大的),二是启用code cache的回收机制,可通过在启动参数上增加:-XX:+UseCodeCacheFlushing来启用。

    调整1:将现场的weblogic启动参数调整为:-XX:ReservedCodeCacheSize=1024m,宕机的频率下降,不过还是有宕机。

    调整2:再加上参数-XX:+UseCodeCacheFlushing ,到目前为止很稳定。

    总结:不过要解决根上的问题,还是要看下代码,检查哪里没有内存泄露的问题。这个第三方的报表工具是新加入的组件,新的东西会带来新的问题,所以问题诊断也要与时俱进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值