我有一个问题,我的应用程序部署在容器中,我永久和稳定的捕获内存不足。我试图用-xx:MaxDirectMemorySize限制缓冲区内存,结果我又发现了一个直接缓冲区内存不足的问题。我陷入了一个恶性循环,也许有人知道这个决定吗?应用程序不使用DirectByteBuffer,但内存在增长。我使用的是Sping Boot 2.3.12。
hfsqlsce1#
我遇到了类似的问题。请提供有关您的环境的更多详细信息:Linux内核版本、Linux分布式版本、Java版本和提供者、存储器分配管理器(如果它已经改变)、容器化工具版本。我的建议是使用async-profiler来验证内存泄漏调用堆栈帧https://github.com/jvm-profiling-tools/async-profiler。然后尝试更改默认内存分配器akka malloc。我强烈推荐它使用这一个https://github.com/jemalloc/jemalloc,请看一下这个实现。
1条答案
按热度按时间hfsqlsce1#
我遇到了类似的问题。请提供有关您的环境的更多详细信息:Linux内核版本、Linux分布式版本、Java版本和提供者、存储器分配管理器(如果它已经改变)、容器化工具版本。
我的建议是使用async-profiler来验证内存泄漏调用堆栈帧https://github.com/jvm-profiling-tools/async-profiler。然后尝试更改默认内存分配器akka malloc。我强烈推荐它使用这一个https://github.com/jemalloc/jemalloc,请看一下这个实现。