- A Concurrent Affair - https://www.concurrentaffair.org -

At PLDI 2010

I’m at PLDI right now. Toronto is nice, the tutorials on Sunday were great, and so were most of the paper sessions. The downsides are the lack of outlets in the conference rooms, and the virtually complete lack of WLAN in the entire hotel (there is wired LAN in the hotel rooms).

In the evenings, I’ve been profiling DrJava to find out why our DrJava tests on Hudson was thrashing so much [1]. I noticed that MainFrameTest was currently using about 650 MB or heap space. No wonder our 512 MB server had trouble. I couldn’t really tell what was going on. YourKit really only showed me that there were lots of HashMap [2].Entry instances being created. They seemed to have something to do with tables and the Preferences window.

I checked out several old revisions, going as far back as 4694 [3] from the end of 2008. Its MainFrameTest needed only about 300 MB. Through divide and conquer, I realized that the switch from JList [4] to JTable [5] for Vector [6]*OptionComponents added a lot of bloat, at least in the tests. This was most dramatic for the VectorKeyStrokeOptionComponents

I started working on rolling the changes for keystrokes back. I was able to reduce memory consumption to about 400 MB. but the list-based GUI is just so ugly compared to the newer tables.

Fortunately, just before I had left for PLDI I had asked IT to add more swap space to our Hudson server, and that made the whole problem a non-issue: What took about two hours when Hudson was thrashing now takes less than 15 minutes.

I don’t think I’ll commit these changes. I’ll just file it under “can be done if necessary.”

[7] [8]Share [9]
2 Comments (Open | Close)

2 Comments To "At PLDI 2010"

#1 Comment By b0b0b0b On June 11, 2010 @ 11:16

if you can cause some outofmemoryerrors and capture heap dumps at those points, I’d be happy to look at them and see if I can submit a patch or help out.

#2 Comment By Mathias On June 11, 2010 @ 11:19

Hi, thank you for your comment. There were no OutOfMemoryErrors, it really was just thrashing.