我正在尝试调试内存不足错误。当我使用 Jmap 进行堆转储并使用 eclipse Mat 分析结果时 - 我看到以下内容。
7,677 instances of "java.lang.Class", loaded by
"<system class loader>" occupy 48,094,720 (23.99%) bytes.
最大实例:
class blah.BlahService$$EnhancerByCGLIB$$4a0a7d43 @ 0x2aaab06d9668
- 2,067,096 (1.03%) bytes.
BlahService 是一个带有@Service 注解的spring 服务。所有服务类在春季都是单例的——每个 IOC 每个 bean 一个——那么为什么这个类会成为头号嫌疑人。
我也看到
One instance of "org.apache.jasper.servlet.JspServlet" loaded by
"org.apache.catalina.loader.StandardClassLoader @ 0x2aaac17bc260" occupies 42,724,168
(21.31%) bytes. The memory is accumulated in one instance of
"java.util.concurrent.ConcurrentHashMap$Segment[]" loaded by "<system class loader>".
这是什么意思?