Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No autorelease pool with JOGL

I tried to add JOGL to my project, and after a long time searching the web I found the solution. I added the jars to my buildpath and Eclipse recognizes them.
I wanted to test it, so took the code from here: https://sites.google.com/site/justinscsstuff/jogl-tutorial-2 and compiled.
The AWT-way gives me this result:

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

I can't find others with the same problem. I did find others with the same error, but not with the same cause.
The NEWT-way gives me a white square, which 'doesn't respond' and I have to force-stop it (Apple-key + alt + esc).
My cursor changes into a waiting-cursor. Although it's nice designed I'd rather get rid of it.
How should I solve this? I'm using Eclipse on a Mac. OS 10.6.8.

EDIT:

Thanks to Clint the first two lines are gone, but it's still leaking...

EDIT 2:

Solved it!

like image 352
11684 Avatar asked Jun 03 '12 15:06

11684


People also ask

What is an autorelease pool?

An autorelease pool stores objects that are sent a release message when the pool itself is drained. Important. If you use Automatic Reference Counting (ARC), you cannot use autorelease pools directly. Instead, you use @autoreleasepool blocks.

What is an autorelease pool in Swift?

The autoreleasepool allows you to explicitly manage when autorelease objects are deallocated in Swift, just like you were able to in Objective-C. Note: When dealing with Swift native objects, you generally will not receive autorelease objects.

How an autorelease pool works at the runtime level?

To use an autorelease pool, send an object an -autorelease message instead of a -release message. The receiver is not immediately released; it is simply added to the autorelease pool. Later—usually long after your code has finished—the pool is drained and each object in the pool receives its -release message.


2 Answers

If you have swt.jar in your classpath and are not using it, you should remove it.

like image 101
Clint Avatar answered Sep 17 '22 01:09

Clint


I got rid of the errors, it was pretty stupid, after all. I found the solution a few days ago already: setting -Djava.awt.headless=true with the java terminal command. But, I did not know how to do this in Eclipse, so I tried putting it into Program Arguments, which is, I now realize, quite stupid. Putting it into JVM Arguments helped and solved the problem, I am now encountering the next. I hope this helps other people having the same problem.

like image 27
11684 Avatar answered Sep 18 '22 01:09

11684