I'm having an odd, and stressing, problem with running a large JUnit Plugin test suite in Eclipse. When I try to re-run a JUnit plugin suite that has just been executed, Eclipse hangs for quite some time before it eventually wakes up and launches. It can take up to 5 minutes sometimes, and increases with the size of the suite. Visually, it appears as a GC cleanup, except that I have plenty of GC space available (400 MB freely allocated).
The size of the workspace that is has to delete is well under 1 GB, and there are not too many files - definitely less than 20,000.
While I was waiting for a new run to start, I decided to manually kill explorer.exe
to see if it had any effect. Surprisingly, Eclipse instantly fell out of its freeze and ran as normal.
This makes me think that Windows is somehow interfering with the deletion of these workspace files. They're not being put into the Recycle Bin though. The workspace is in C:
which I think is out of the range of any workspace/domain stuff. Any ideas?
Edit: I am using Eclipse 3.5.2, JRE 1.6.02, JUnit 3. Nothing unusual. I am pretty sure it's not a memory leak; it has never crashed with an OOM exception (if it did, I could easily analyse it with the MemoryAnalyzer).
Upon further investigation while it was freezing, indeed it was due to deleting files. The initial size of the workspace was around 20,000 files/5000 directories and a measly 100 MB. I could watch files being deleted, and eventually the workspace was empty and Ecl开发者_运维百科ipse un-froze.
I have submitted Eclipse Bug 311814 about this problem.
You can try and generating a Head Dump for a module like Memory Analyzer to analyze.
That way, you could see what kind of thread is waiting for what, like in this bug (it could be a fork issue).
精彩评论