JOGL 没有自动释放池

Posted

技术标签:

【中文标题】JOGL 没有自动释放池【英文标题】:No autorelease pool with JOGL 【发布时间】:2012-06-03 15:17:50 【问题描述】:

我尝试将 JOGL 添加到我的项目中,在网上搜索了很长时间后,我找到了解决方案。我将 jar 添加到我的构建路径中,Eclipse 可以识别它们。 我想测试它,所以从这里获取代码:https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 并编译。 AWT 方式给了我这个结果:

2012-06-03 18:20:44.623 java[1481:903] [Java CocoaComponent compatibility mode]: Enabled
2012-06-03 18:20:44.626 java[1481:903] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000
2012-06-03 18:20:46.253 java[1481:903] *** __NSAutoreleaseNoPool(): Object 0x102034900 of class NSConcreteMapTableValueEnumerator autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.259 java[1481:903] *** __NSAutoreleaseNoPool(): Object 0x10209e3f0 of class __NSCFDate autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.259 java[1481:903] *** __NSAutoreleaseNoPool(): Object 0x10209cbd0 of class NSCFTimer autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.301 java[1481:d703] *** __NSAutoreleaseNoPool(): Object 0x10015e990 of class NSCFNumber autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.301 java[1481:d703] *** __NSAutoreleaseNoPool(): Object 0x100121720 of class NSConcreteValue autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.302 java[1481:d703] *** __NSAutoreleaseNoPool(): Object 0x10011c2f0 of class NSCFNumber autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.302 java[1481:d703] *** __NSAutoreleaseNoPool(): Object 0x1001ba750 of class NSConcreteValue autoreleased with no pool in place - just leaking
2012-06-03 18:20:46.302 java[1481:d703] *** __NSAutoreleaseNoPool(): Object 0x100157e70 of class NSCFDictionary autoreleased with no pool in place - just leaking

我找不到其他有同样问题的人。我确实发现其他人有同样的错误,但原因不同。 NEWT 方式给了我一个白色方块,它“没有响应”,我必须强制停止它(Apple-key + alt + esc)。 我的光标变为等待光标。虽然它设计得很好,但我宁愿摆脱它​​。 我应该如何解决这个问题?我在 Mac 上使用 Eclipse。操作系统 10.6.8。

编辑:

感谢克林特,前两行已经消失,但它仍在泄漏......

编辑 2:

解决了!

【问题讨论】:

你能发布更多细节吗?尤其是你正在使用的代码和你用来运行它的命令行 我很乐意提供更多细节,但我不知道是什么原因造成的,所以我不知道应该提供哪些细节。但是,你问的两件事已经在问题中了。我通过 Eclipse 编译和运行,代码在问题中提到的站点上。 @kritzikratzi 【参考方案1】:

如果你的类路径中有 swt.jar 并且没有使用它,你应该删除它。

【讨论】:

我今天下午试试这个。但这是为什么呢? 它确实部分工作。它现在向我显示了一个框架,但它给了我同样类型的错误消息。 它确实有效,因为它显示了一个框架并且前两行已经消失,但没有进一步改变......【参考方案2】:

我摆脱了错误,毕竟这很愚蠢。几天前我已经找到了解决方案:使用java 终端命令设置-Djava.awt.headless=true。但是,我不知道如何在 Eclipse 中执行此操作,所以我尝试将其放入 Program Arguments 中,我现在意识到,这非常愚蠢。将它放入 JVM Arguments 帮助并解决了这个问题,我现在遇到了下一个问题。我希望这可以帮助其他遇到同样问题的人。

【讨论】:

以上是关于JOGL 没有自动释放池的主要内容,如果未能解决你的问题,请参考以下文章

ios自动释放池

为啥这段代码调用自动释放池?

在没有池的情况下自动释放 - 没有启动新线程

在没有池的情况下自动释放

自动释放池

29-oc自动释放池