如何克服Vaadin ScssCache创建的堆转储?

时间:2018-07-24 08:20:29

标签: java sass vaadin heap-memory heap-dump

我使用具有各自UI的Vaadin创建了一个应用程序。

我正在最大堆负载为250 Mb的服务器上运行。由于未进行垃圾收集,因此应用程序由于堆负载而崩溃。

我尝试使用visualVM分析器运行。发现有很多实例,并且以某种方式让vaadin ScssCache弄得一团糟。

如何纠正此错误?是因为浏览器缓存设置,还是我应该对vaadinservletcache条目执行某些操作?

我真的不明白,请帮忙。我已附上我的VisualVm屏幕快照以供参考。非常感谢你。我正在使用vaadin 7.6.3。

visualVm

1 个答案:

答案 0 :(得分:0)

附加的VisualVM屏幕快照显示,整个scssCache保留1248kb的内存,其中1200kb用于实际缓存的CSS内容。这不到您250mb堆大小的1%,很可能不是问题所在。

带有已编译CSS的1200kb char[]可能是堆上最大的单个对象,但是只有一个这样的对象。因此,您将不得不寻找其他消耗大量内存的东西。我建议查看按其保留大小排序的类列表,并忽略诸如char[]java.lang.Stringjava.Util.HashMap之类的低级类,而尝试找出与您的内容相关的任何内容自己的应用程序。

我也鼓励您验证应用程序是否实际在生产模式下运行,因为我可以识别出对scssCache进行任何操作的唯一代码路径是通过VaadinServlet.serveOnTheFlyCompiledScss来检查生产模式是否为启用,在这种情况下会在触摸缓存之前返回。