Today my linux thinkpad gave up the ghost. Eclipse just decided that it didn’t want to run anymore. Continually crashing, usually during file access, to the point where it wouldn’t run more than 5-15mins. This just isn’t acceptable for a work computer. This lead me to spend the day digging through the eclipse bug reports to see if I could figure out what was going on.
It turns out that it was a vm crash in native code. What was initially a bit disappointing was that there were several bug reports with the exact problem described on the eclipse bug system, but once it was determined that it was a jvm problem and not an eclipse problem all discussion was stopped and the bug was closed. Definitely a bit disappointing since a pointer in the right direction would have been really helpful. I do understand that with a project the size of Eclipse you do need to stay focused, but some of the comments were just a bit harsh.
While the stack traces let me know that the problem was in the jvm native code they weren’t any more helpful in tracking the issue down further. It appears that the source of the problem is actually in a library on the linux install because I tried installing multiple different jdks and all of them had the same exact problem. Clean installs had no affect on the problem at all. So, I’ve taken this as a sign that the upgrade that I had been planning to do for sometime was finally due.
Another disconcerting issue that I found while digging through the Eclipse bug reports was that eclipse can have OutOfMemoryErrors due to running out of PermSize space. This is due to all of classes that are loaded through the Eclipse plugin system. I’ve found that the Callisto System has a whole slew of useful plugins, but what I hadn’t realized was that for me doing a default install from Callisto brought Eclipse to 99.8% usage of PermSize space after startup. Anything in addition would put the system over the edge. It appears that you can address the problem by putting a fix like “-XX:PermSize=256m -XX:MaxPermSize=256m” in your eclipse.ini file.
This issue really brings up the inefficiency of java classloaders with the plugin system as well as the lack of standards with java executable params. With a full Eclipse IDE you really need at least 1Gb of memory just to get going. Anything less than this and you’re just not going to get the performance that you need. The other issue is that Eclipse has a really tough time managing something simple like PermSize because the java is designed to not care what’s running underneath, but if there is not a standard way to address these params then you really can’t address the problem in an elegant way.