JPype を使用して Java を呼び出す Python で記述されたソフトウェアがあり、リソースを大量に消費するさまざまな計算/レポート作成を実行します。JVM の起動時に、最初に 800MB のヒープ領域を割り当てました。Java 側は完全にマルチスレッド化されており、利用可能なあらゆるリソースで動作します。
jvmArgs = ["-Djava.class.path=" + classpath, "-Xmx800M"]
jpype.startJVM(u"java\\jre8\\bin\\client\\jvm.dll", *jvmArgs)
これは、従来のクライアント用に Windows XP でテストするまではうまく機能していました。新しいマシンは 4 GB の RAM を搭載した Win 7 64 ビットですが、古いマシンは 2 GB の RAM しか搭載していない Win XP 32 ビットです。
問題は、メモリを割り当てすぎた場合、JPype が原因でアプリケーションが無言でクラッシュすることです。上記のステートメントでは、try catch もトリガーされません。
コマンドラインからJavaを使用して、コンピューターに割り当てることができるメモリの量を決定する方法があるかどうか疑問に思っています。32ビットか64ビットかを確認できますが、JVMのヒープスペースを占有している他のプログラムを実行していないことを確認する必要があります. そうである場合、アプリケーションはクラッシュします。
読者のダイジェスト: JVM の初期化時に 500 MB のヒープ領域を割り当てたいのですが、現在どのくらいの領域が使用されているかわかりません。割り当てすぎると、アプリケーション全体が静かにクラッシュします。
以下の JPype を使用します: 0.5.4.2 Python: 2.7 Java: 1.8 または 1.7 (64 ビットまたは 32 ビット)
ありがとう。