[英]Java Applet does not start properly when Max Heap Size is set
我最近一直在努力开发applet。 我一直在尝试使用JNLP和“ deployJava.js”脚本启动它。 问题是这是我正在开发的一个占用大量内存的小程序,肯定会需要比JVM通常提供的基本内存更多的内存。
我试图使用JNLP中j2se元素的max-heap-size属性进行设置。 实际上,这确实可行,但是问题在于小程序似乎以某种方式重新启动,因为我打开了两个“ java控制台”窗口。 一个未从小程序接收任何输出,而另一个显示了我正在输出的日志记录信息。 此外,小程序似乎没有运行。 但是,如果我在不关闭浏览器的情况下清除了类加载器缓存并重新加载了页面,则该applet可以使用正确调整的最大堆大小以及所有内容。
我不知道是什么原因导致这种奇怪的行为,但是我非常需要这里的解决方案。 如果未设置最大堆大小,则该applet表现良好(除了耗尽内存。)而且,如果我在HTML中使用applet
标签,则通过<param name="java_arguments" value="-Xmx1g">
可以正常工作。 但是,我知道applet标记已被弃用,并且可能不适用于所有浏览器,因此我不想坚持使用它。 我希望有人能提供一些我在这里缺少的见识。
底线:当我添加max-heap-size
,小程序无法正常工作。 我需要帮助找出原因。
这是HTML / JavaScript / PHP:
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {
code: 'floodsim.SimApplet.class', archive: 'SimApplet.jar',
width: 500, height: <?php echo "$height"; ?>};
var parameters = {
<?php
echo "imgwidth: $imgwidth, imgheight: $imgheight, imgcount: $imgcount, key: '$key',";
?> jnlp_href: 'simApplet.jnlp'};
deployJava.runApplet(attributes, parameters, '1.6');
</script>
这是JNLP(我也使用JaNeLa进行了检查):
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost:8888/floodsim/simulation/" href="simApplet.jnlp">
<information>
<title>Simulation Viewer</title>
<vendor>Seth Gunnells</vendor>
<offline-allowed />
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" max-heap-size="1024m" />
<jar href="SimApplet.jar" main="true" />
</resources>
<applet-desc
name="Simulation Viewer"
main-class="edu.tntech.floodsim.SimApplet"
width="500"
height="600">
</applet-desc>
</jnlp>
在JNLP的任何地方都没有指定max-heap-size
。 给出的示例是:
<j2se version="1.3" initial-heap-size="64m" max-heap-size="128m"/>
applet元素中没有任何地方指定Java参数 。 给出的示例是:
<PARAM name="java_arguments" value="-Xmx128m">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.