由于实施错误很小,我发现我可以多快地解决Java堆空间问题
现在错误修复了一切都很好,但它确实让我研究如何解决这个问题,并且我提出了多种解决方案,例如
java -Xms5m -Xmx15m MyApp
问题是这会改变我计算机上的java内存,但我正在开发一个将在webrowser中使用的Applet。
因此,有没有办法在APPLET的RUNTIME中更改堆大小?
答案 0 :(得分:10)
您可以向applet标记添加参数。但是您感兴趣的参数仅适用于Java6 u10或更高版本。
示例:
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">
<PARAM name="java_arguments" value="-Xmx256m">
</APPLET>
这里有更多信息http://www.oracle.com/technetwork/java/javase/plugin2-142482.html#JAVA_ARGUMENTS
答案 1 :(得分:2)
AFAIK,只有用户可以更改JRE堆设置。小程序无法更改此设置。
<强>更新强>
似乎在最新版本的JDK中这是可能的。请看:How can I start an Java applet with more memory?
<强> UPDATE2:强>
只能为JNLP应用程序设置内存设置,而不能为Applet设置。
答案 2 :(得分:1)
如果未在命令行中指定,则必须从JVM设置中获取它。因此,当您将小程序部署到Web时,它将取决于它们运行时在计算机上具有的内存设置。通常它默认设置为60-90Mb,因此请尽量将其保持在此范围内。
如果applet可以更改这些设置,请考虑其后果......它可以更改的其他内容。这只是最终要求安全漏洞,而Java的目标是在功能之前实现安全性:)
答案 3 :(得分:1)
JVM可能在Applet之前就开始了。现在为时已晚 改变堆大小。尝试Java Web Start,您可以在其中控制它,生成 适用于Applet /应用程序的新JVM。