我一直在为客户端和服务器使用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()
选项,但我仍然遇到了问题。事实上,使用此选项完成的链接截图已设置完毕。
我想知道是否有人可以解释我这个问题,是否有办法解决它?
答案 0 :(得分:1)
我终于设法避免使用Mockito。由于我只需要模拟Gdx.gl并且它不是用于测试目的,我只是创建了一个名为 FakeGL20 的虚拟类,它实现 GL20 接口而不做任何事情。
然后我将这个新类分配给Gdx.gl:Gdx.gl = new FakeGl20()
在进行了更改之后,我没有任何内存泄漏问题
希望有一天能帮助别人。