最近、アプレットの開発に苦労しています。JNLP と「deployJava.js」スクリプトで起動しようとしています。問題は、これが私が開発中のメモリ集約型アプレットであり、JVM に通常与えられる基本的なメモリ割り当てよりも多くのメモリが確実に必要になることです。
JNLP の j2se 要素の max-heap-size 属性を使用して、これを設定しようとしました。これは実際には機能しますが、問題は、2 つの「Java コンソール」ウィンドウが開くため、アプレットが何らかの形で再起動するように見えることです。1 つはアプレットからの出力を受け取りませんが、もう 1 つは私が出力しているログ情報を示しています。また、アプレットが実行されていないように見えます。ただし、ブラウザを閉じずにクラスローダのキャッシュをクリアしてページをリロードすると、アプレットは正しく調整された最大ヒープ サイズとすべてで動作します。
この奇妙な動作の原因はわかりませんが、解決策がどうしても必要です。applet
最大ヒープ サイズを設定しない場合、アプレットは正常に動作します (メモリ不足を除く) <param name="java_arguments" value="-Xmx1g">
。ただし、アプレット タグは推奨されておらず、すべてのブラウザーで機能しない可能性があることを理解しています。ここで私が見逃しているものについて誰かが洞察を提供してくれることを願っています。
結論: アプレットを追加すると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>