Libgdx无头应用程序上的Mockito内存泄漏
我一直在为客户端和服务器开发一个使用libgdx的多人游戏。为了使服务器无头运行,我必须使用mockito模拟OpenGL上下文,如图所示:Libgdx无头应用程序上的Mockito内存泄漏,libgdx,mockito,headless,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.OutOf
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"
由于它似乎是内存泄漏,我立即启动了EclipseMat(内存分析工具),结果非常直接:我在谷歌上搜索了“Mockito内存泄漏”,发现我可以像上面那样尝试使用
Mockito.withSettings().stubOnly()
选项,但我仍然遇到了这个问题。事实上,链接的屏幕截图已经设置好了这个选项。
我想知道是否有人能向我解释这个问题,是否有办法解决它?我终于设法避免使用Mockito。因为我只需要模拟Gdx.gl,而不是出于测试目的,所以我只创建了一个名为FakeGL20的虚拟类,它实现了GL20接口,而不做任何事情。
然后我将这个新类分配给Gdx.gl:
Gdx.gl=new FakeGl20()
更改后,我没有任何内存泄漏问题。希望有一天这能帮助别人