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

时间:2018-04-06 19:09:21

标签: libgdx mockito headless

我一直在为客户端和服务器使用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"

由于它似乎是一个内存泄漏,我立即解雇了日食MAT(Memory Analyzer Tool),结果非常直接:MAT Repport
我谷歌关于" Mockito内存泄漏"我发现我可以尝试使用Mockito.withSettings().stubOnly()选项,但我仍然遇到了问题。事实上,使用此选项完成的链接截图已设置完毕。 我想知道是否有人可以解释我这个问题,是否有办法解决它?

1 个答案:

答案 0 :(得分:1)

我终于设法避免使用Mockito。由于我只需要模拟Gdx.gl并且它不是用于测试目的,我只是创建了一个名为 FakeGL20 的虚拟类,它实现 GL20 接口而不做任何事情。
然后我将这个新类分配给Gdx.gl:Gdx.gl = new FakeGl20() 在进行了更改之后,我没有任何内存泄漏问题 希望有一天能帮助别人。