0

カスタム ファイルをインポートできる Java アプリケーションを使用しています。インポート時に、これらのファイルはメモリにロードされます。

問題は、インポートするファイルが非常に大きいことです。これにより、OutOfMemory 例外が発生します。クラッシュ ログには、VM が Java パラメータ「-Xmx512m」で起動されたことが示されています。これを「-Xmx1024m」に変更して、使用可能なメモリを 2 倍にしたいと考えています。

問題は、このアプリケーションが独自の JRE フォルダーを使用していることと、jvm.dll ファイルを呼び出す C で記述されたランチャーがあることです。いずれにせよ、java.exe または javaw.exe が呼び出されることはないため、これらのパラメーターを自分で設定することはできません (これらの実行可能ファイルを削除しても問題ありません。アプリケーションを実行できます。これは dll には当てはまりません)。

私の質問は、この VM パラメータを別の方法で設定できますか? 他に方法がない場合は、JRE ファイルを変更しても構いません。

更新:追加情報が見つかりました:

jvm_args: -Djava.system.class.loader=com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

java_command: 不明

ランチャーの種類: 一般

4

1 に答える 1

1

おそらく、標準の JVM を使用してランチャーを排除しようとする方がよいでしょう。Java がどのパラメーターで起動されているかを確認できるかどうかを確認してください。ランチャーと関連する構成ファイルをダンプすると役立つ場合があります。

次に、自分で Java を呼び出すだけです。

ランチャーが他に何をしているかによっては、これはまったく機能しない場合があります。

編集:

試す:

java -Djava.system.class.loader=com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

コマンドラインから実際の JVM に対して。Java ローダーによって設定された NativeClassLoader またはその他のもののために、失敗する可能性が高くなります。

また、開始しようとしている実際のJavaクラスが欠落している可能性があります(その「NativeClassLoader」が実際のメインクラスを必要とするかどうかはわかりません)。

Cクラスローダについて詳しく知らなければ、誰かがあなたを助けることができるかどうかわかりません. 販売元に連絡してみてはいかがでしょうか。.exe ファイルをダンプして、識別テキストがあるかどうかを確認できます。それがどこから来たのかがわかれば、パラメータを JVM に転送する方法を説明しているドキュメントを見つけることができるかもしれません。

于 2010-04-27T23:22:00.837 に答える