明显的Grizzly内存泄漏 - HTTP请求和响应

时间:2017-02-15 00:47:07

标签: java memory-leaks jersey grizzly

最近,我开发的应用程序开始使用比平常更多的内存。它是一个独立的Jersey REST webapp,可以运行定期的数据处理工作。我担心我正在处理的数据大小突然飙升,所以我进行了一次堆转储,把它扔进Eclipse MAT,得到了这些结果:

Oh, all of the memory is being used by a memory manager. Great.

所有内存都由PooledMemoryManagerbyte[] s的形式使用。当我检查这些字节时,它们绝大多数看起来都包含HTTP请求和响应的文本:

GETs and OKs for days

我希望应用程序能够对每个请求进行大量记录,大约每30秒一次,因为我的监控服务会ping其healthcheck端点。但是,有大约30,000个这些字符串存储在4KB块中,但尚未被释放,因为oldgen空间开始运行不足并且我的应用程序崩溃。

我无法解释这种行为;它在我最近的部署后大约一周开始发生,但是只需要大约一天的时间来消耗整个堆,而且我在过去几个月中部署的代码都没有在触摸Jersey或Grizzly代码。

有没有人见过这样的事情?

0 个答案:

没有答案