Debug Client Side stops for Outofmemory

Hallo everyone,

I’m create some Custom Widgets to evaluate an integration between Vaadin and some SmartGWT components that we would need for our presentation layer (Toolbars, TileLayout, CheckboxTrees etc) just implementing the Client-Server communication.

I am working on Intellijidea 9 and using the build ant to compile my custom widget set and using Vaadin 6.4 (GWT 2.0.4 inside)

The problem comes when I try some ClientSide Debugging using the “com.google.gwt.dev.DevMode” with parameters:

-noserver -war war/VAADIN/widgetsets -startupUrl http://localhost:8080/MyApplication com.mycompany.web.myapplication.gwt.MyApplicationWidgetSet

I also added -Xmx1024m VM parameter and the resulting call is:

“C:\Program Files\Java\jdk1.6.0_17\bin\java” -agentlib:jdwp=transport=dt_shmem,address=javadebug,suspend=y,server=n -Xmx1024m -Dfile.encoding=windows-1252 -classpath “… several jar libs…” com.google.gwt.dev.DevMode -noserver -war war/VAADIN/widgetsets -startupUrl http://localhost:8080/MyApplication com.mycompany.web.myapplication.gwt.MyApplicationWidgetSet

The result is an Out of memory exception in the GWT Development Mode when I launch the Default Browser (see attached file).
But the java.exe process use much less than the 1GB I allocated (about 230 MB usually).

It seems that the DevMode ignores this -Xmx1024m VM Parameter at all.

Any suggestions please?

Thanks in advance,
Christian
11425.jpg

DevMode should not ignore the parameter. I would guess you are running out of permanent generation space rather than normal heap space, even though the error message does not say so. Try adding also “-XX:MaxPermSize=512M” or something like that.

Stack space was sometimes an issue with older versions of GWT, but should not be with the current versions.

Yes, you’re the man!
With -XX:MaxPermSize=512M I finally get no out of memory exception.

Now I have the problem that the WidgetMapImpl cannot find the client side classes of the Widgetset.

Do I have to specify where the DevMode can find the classes? (with -gen parameter or similar)

The compiled classes (client and server) are in a jar in the classpath and source files are in the Project Intellijidea path.

Any idea about what I am missing?

Thanks again,
Christian
11426.jpg

Are the full IntelliJ Idea
classpath
and
source path
both used on the
classpath
of DevMode? DevMode should find the classes if the client side sources are on its classpath. You could also try to run the GWT compiler (com.google.gwt.dev.Compiler) with the same parameters as far as supported - I suspect it would not find the widgets, either.

Your client side code location looks correct to me as far as I can see - the classes are in a “client” subpackage of the directory with the GWT module.

Note that GWT compiler does not care about it, but for some utility classes, it is best to have the (client side) source directory first on the classpath.

Yes using the Compiler I was having the same error but I finally got the problem.

The issue was that my build-ant (modfication of the Color-Picker) was building the jar file with a wrong hierarchy.
Actually the .java files were not added in the proper package but just in the root of the jar file.
The other source file paths that I was adding were ignored too.

I slightly modified the ant build (in particular the package-jar target) to have the sources on the same folders of the classe and now finally I can debug the client side code!!

I’m having nice results adding SmartGWT client side components and providing a server-side Vaadin implementation of the client-server communication.

Thanks again Herni for the useful feedbacks and for the nice work with Vaadin!