我最近一直在努力开发一个小程序。我一直在尝试使用 JNLP 和“deployJava.js”脚本来启动它。问题是这是我正在开发的一个内存密集型小程序,并且肯定需要比 JVM 通常提供的基本内存分配更多。
我尝试使用 JNLP 中 j2se 元素的 max-heap-size 属性来设置它。这确实有效,但问题是小程序似乎以某种方式重新启动,因为我打开了两个“java 控制台”窗口。一个没有收到来自小程序的输出,而另一个显示我正在输出的日志信息。此外,小程序似乎没有运行。但是,如果我在不关闭浏览器的情况下清除类加载器缓存并重新加载页面,则小程序可以使用正确调整的最大堆大小和所有内容。
我不知道是什么导致了这种奇怪的行为,但我迫切需要一个解决方案。如果我没有设置最大堆大小,则小程序表现良好(内存不足除外。)此外,如果我applet
在 HTML 中使用标签设置最大堆大小,则通过<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>