7

Due to a small implementation mistake I discovered how quickly I could reach a Java heap space issue

now the bug is fixed everything is fine but it did get me looking into how to solve this and I foudn multiple solution such as

java -Xms5m -Xmx15m MyApp

the problem is that this changes the java memory on my computer, but I'm working on a Applet that is going to be used in a webrowser.

Therefore, is there a way, at RUNTIME in an APPLET to change the heap size ?

trincot
  • 317,000
  • 35
  • 244
  • 286
Jason Rogers
  • 19,194
  • 27
  • 79
  • 112

4 Answers4

10

You can add parameters to the applet tag. But the parameter you are interested on is available only on Java6 u10 or later.

Example:

<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
    <PARAM name="java_arguments" value="-Xmx256m">
</APPLET>

Here more information http://www.oracle.com/technetwork/java/javase/plugin2-142482.html#JAVA_ARGUMENTS

Thorbjørn Ravn Andersen
  • 73,784
  • 33
  • 194
  • 347
Dubas
  • 2,855
  • 1
  • 25
  • 37
  • Extra memory can also be defined for applets deployed via. JNLP, but this is the simpler method. Note especially the last two links in the applet Wiki (http://stackoverflow.com/tags/applet/info). Good call on the link & example. (whispers) hopefully some of the other contributors to this thread will learn a thing or two. ;) – Andrew Thompson Feb 17 '11 at 08:41
2

AFAIK, only user can change JRE heap settings. Applet can not change this settings.

Update:

It seems that in the latest versions of JDK this is possible. Look at: How can I start an Java applet with more memory?

Update2:

Memory settings can only be set for JNLP apps, not for Applets.

Community
  • 1
  • 1
Peter Knego
  • 79,991
  • 11
  • 123
  • 154
1

If it's not specified on the command line, you have to get it from the JVM settings. So when you deploy your applet to the web, it will be dependent on what memory settings they have on their computer when they run it. Typically it's set to 60-90Mb by default, so try to keep it under that.

Consider the ramifications if the applet could change those settings... what else it might be able to change. That's just asking for a security exploit eventually, and Java aims for security before functionality :)

corsiKa
  • 81,495
  • 25
  • 153
  • 204
1

the JVM may have started long before you Applet. It is too late now to change heap size. Try Java Web Start where you can control that, spawning a new JVM for your Applet/application.

Eduard
  • 3,176
  • 3
  • 21
  • 31