When I analyze a DevMode process's memory usage (e.g. using jconsole), it shows that Heap and Non-Heap (PermGen) Memory usage increases, whenever the page is reloaded.
This happens both when I run DevMode with Firefox 14, as well as Chrome 21. The difference is however, that
- with Chrome, Heap and PermGen usage restores to a very low value after calling "Perform GC"
- whereas in Firefox the PermGen stays at the high value, and the Heap just decreases slightly. After a number of reloads, this leads to an out of memory (Heap or PermGen, depending on which reaches the limit first). More often than not, the out of memory is not printed (which is usual for out of memory errors).
How to reproduce the error?
Create a simple GWT project (e.g. the one that's auto-generated by Eclipse), use Firefox, press the reload-button repeatedly
(tested on OS X 10.6, but I've encountered similar memory problems on Linux amd64, too)
Solution?
Without knowing anything about the details of the FF plugin, it looks as if the Chrome plugin discards the ClassLoader entirely (so the
PermGen space can be freed up), whereas FF probably keeps a reference to the ClassLoader somewhere (?)
Problems when restarting DevMode
The problem may also explain, why many people are seeing an
[ERROR] Unable to bind socket on port 9997 -- is another session active?
java.net.BindException: Address already in use