1

我最近一直在努力开发一个小程序。我一直在尝试使用 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>
4

1 回答 1

1

在小程序中设置堆大小

JNLP 中没有任何地方指定max-heap-size. 给出的例子是:

<j2se version="1.3" initial-heap-size="64m" max-heap-size="128m"/>

在applet 元素中没有任何地方指定Java 参数。给出的例子是:

<PARAM name="java_arguments" value="-Xmx128m">
于 2013-04-28T07:29:39.727 回答