[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.swt] Re: javaw.exe keeps running in Windows

Steve Northover wrote:

The java VM will not keep running if you fail to dispose an SWT resource.
Are you exiting from your event loop?

"Bill Ewing" <ewing@xxxxxxxxx> wrote in message
news:csrshl$asq$1@xxxxxxxxxxxxxxxxxx
In Task Manager, you see an instance of javaw.exe (Windows' jvm launcher)
appear when you start eclipse.  We see another instance appear when we run
our JFace app (either under eclipse or standalone).

After exiting our app, its javaw.exe does not disappear from Task Manager.
 They pile up, one for each run.  Eventually, system problems begin to
occur.  Plus, when you try to shut down windows, you get all of these
instances not responding to windows.

It sure sounds like a memory leak, or a failure to dispose a system
resource, such as a non standard color.

But, we've scoured our app and commented out all such Color creations.  We
don't do anything with fonts, so we're out of ideas as to what would cause
this problem.  We have verified that this problem does not occur with
simplistic apps.

Anyone have any ideas on...?
 1. What our problem is
 2. Strategies for troubleshooting


Thank you for taking the time to post, Steve. The information in your response is valuable to us.


We are using JFace. Specifically, we have an ApplicationWindow class that contains a main method. So, I believe handling the event loop is automatically done by ApplicationWindow-- it's buried and not available for us to see (until we figure out how to attach source and JavaDoc to libs we use).

What would you suggest we look at next?

I was in the process of commenting out chunks of the program, piece by piece until the zombie javaw.exe no longer hangs around in Task Manager.

But now, the knowledge that failure to dispose() would not cause this problem makes us wonder just what sort of problem we are chasing.

Our main method looks like the following. It was auto-generated by the GUI builder available from swt-designer.com.

	public static void main(String args[]) {
		try {
			MainWindow window = new MainWindow();
			window.setBlockOnOpen(true);
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}