Libgdx 无头应用程序的 Mockito 内存泄漏

Mockito Memory leak on Libgdx Headless Application

我一直在为客户端和服务器使用 libgdx 开发多人游戏。为了使服务器 运行 无头,我不得不使用 mockito 来模拟 OpenGL 上下文,如下所示:

Gdx.gl = Mockito.mock(GL20.class, Mockito.withSettings().stubOnly());
new HeadlessApplication(new MainServer(true), config);

但是我注意到在 5~6 小时后服务器崩溃并显示以下消息:

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "HeadlessApplication"Exception in thread "Server"

由于它看起来是内存泄漏,所以我立即启动了 eclipse MAT(内存分析器工具),结果非常简单:MAT Repport
我 google 关于 "Mockito memory leak" 我发现我可以像上面那样尝试使用 Mockito.withSettings().stubOnly() 选项,但我仍然遇到了问题。事实上,link 中的屏幕截图是通过设置此选项完成的。 我想知道是否有人可以向我解释这个问题,是否有任何方法可以解决它?

我终于设法避免使用 Mockito。由于我只需要模拟 Gdx.gl 而不是为了测试目的,我只是创建了一个名为 FakeGL20 的虚拟 class 来实现 GL20界面什么都不做。
然后我将这个新的 class 分配给 Gdx.gl:Gdx.gl = new FakeGl20() 进行更改后,我没有任何内存泄漏问题。
希望有一天这对某人有所帮助。