【发布时间】:2020-12-27 07:50:39
【问题描述】:
类似于java.lang.OutOfMemoryError ( PermGen space) and java.lang.ClassNotFoundException at the opening the jsp page,但有一些更现代的问题。
我有一个包含大量 JSP 的旧版应用程序。他们中的一些人使用   ... 来处理空格(因为页面上的 CSS 清理尚未完成)。
最近我们在系统运行一段时间后出现内存不足的错误。我正在评估堆空间,它似乎受到控制,强制定期 GC 显示它小于 100MB 的堆,但非堆大小正在增加。我已将大小限制为 300MB,这似乎已经很多了,因为系统在 Docker 中通常以 512MB 运行。
无论如何,我使用 JSPC,当我总计所有生成的类文件占用的字节量时,我得到 21,981,012 字节。 根据我看到的其他答案,我将它放入元空间。当然,当它被解压到内存中时,这个数字可能会增加很大一部分。
所以我的问题是,有没有办法配置 Java 或 Tomcat 在不使用时从元空间释放类数据,并在需要时重新加载?
更新:我在CATALINA_OPTS 中明确限制了元空间大小,以便它更快地失败 -XX:MaxMetaspaceSize=200m -XX:CompressedClassSpaceSize=100m
【问题讨论】:
标签: java jsp tomcat memory memory-leaks