So I can build Rakudo for the JVM no problem on a rather beefy server.
When I tried it on a desktop with 2GB it fails:

$ java 
-Xbootclasspath/a:.:/home/nick/Perl/rakudo/nqp/install/nqp-runtime.jar:/home/nick/Perl/rakudo/nqp/install/asm-4.1.jar:/home/nick/Perl/rakudo/nqp/install/jline-1.0.jar:rakudo-runtime.jar
 -cp /home/nick/Perl/rakudo/nqp/install perl6 --setting=NULL --optimize=3 
--target=classfile --stagestats --output=CORE.setting.class src/gen/CORE.setting
Stage start      :   0.000
Stage parse      :  77.657
Stage syntaxcheck:   0.000
Stage ast        :   0.000
Stage optimize   :   4.934
Stage jast       :  37.581
java.lang.OutOfMemoryError: Java heap space
  in dump
  in <anon>
  in dump
  in classfile
  in <anon>
  in compile
  in eval
  in evalfiles
  in command_eval
  in command_eval
  in command_line
  in MAIN
  in <anon>
  in <anon>


A bit of Googling reveals that the heap space can be altered with -Xmx, and
it seems that I can get the current value like this:

$ java -XshowSettings
VM settings:
    Max. Heap Size (Estimated): 592.00M
    Ergonomics Machine Class: server
    Using VM: OpenJDK 64-Bit Server VM

[snip lots more exciting information]


So, boosting it to a gig works:

$ java -Xmx1024m 
-Xbootclasspath/a:.:/home/nick/Perl/rakudo/nqp/install/nqp-runtime.jar:/home/nick/Perl/rakudo/nqp/install/asm-4.1.jar:/home/nick/Perl/rakudo/nqp/install/jline-1.0.jar:rakudo-runtime.jar
 -cp /home/nick/Perl/rakudo/nqp/install perl6 --setting=NULL --optimize=3 
--target=classfile --stagestats --output=CORE.setting.class src/gen/CORE.setting
Stage start      :   0.000
Stage parse      :  78.145
Stage syntaxcheck:   0.001
Stage ast        :   0.001
Stage optimize   :   6.578
Stage jast       :  30.003
Stage classfile  :  14.435


(and I can get to "Hello world". Although I admit I haven't figured out
command line arguments yet)

Anyway, the most interesting thing was actually the suggestion in this
answer on stack overflow:

http://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error-64mb-heap/186390#186390

    Yes, with -Xmx you can configure more memory for you JVM. To be
    sure that you don't leak or waste memory. Take a heap dump and use
    the Eclipse Memory Analyzer to analyze your memory consumption.


Does that sound familiar enough to someone to be tempting?

Nicholas Clark

Reply via email to