Java でスタンドアロン アプリケーションを開発しましたが、RAM のメモリ使用量の 70% を使用しているため、システムがハングします。Java アプリケーションのメモリ使用量を削減するソリューションはありますか。助けてください。
3 に答える
単純に JVM メモリ設定 jdk の使用を制限するか、アプリケーション コードのリファクタリングを実行してメモリ割り当てを削減しようとすることができます。
JVM に関する割り当てを指定するために使用できる GC フラグは多数ありますが、正直なところ、Java の最適化は最初にコードを最適化することから得られます。
どのフラグを調べるかについては、次のとおりです。
-Xmx1024M:
jvm の最大ヒープ サイズを 1024 メガバイトに設定します。プロセスに割り当てられる RAM の量を変更できます。
-XX:+AgressiveOpts
jvm スーパーオプション。これにより、他の jvm フラグがアクティブになります。それらをすべて説明するとかなりの時間がかかりますが、基本的には最適化が可能になり、キャッシュ サイズが増加します。どこかに古い投稿があると思います... aha:古い投稿
variableName = null;
リソースが不要になったら、必ずリソースをクリーンアップして設定してください。これにより、ガベージ コレクションの候補となります。
を使用してガベージコレクターを手動で呼び出すこともできますSystem.gc();
しかし、ガベージ コレクションは通常、自動的に行われます。手動で呼び出すと、多くのリソースが消費されるため、最後のオプションにする必要があります。
別の考えられるメモリ リークの問題: 連結した場合Strings
。StringBuilder
文字列を連結する必要がある場合に最適です。
注: untime メソッドを使用してメモリ使用量を監視できます。
Tmp tmp=new Tmp();
Runtime runtime = Runtime.getRuntime();
int procs = runtime.availableProcessors();
String max = tmp.adjust(runtime.maxMemory());
String total = tmp.adjust(runtime.totalMemory());
String used = tmp.adjust(runtime.totalMemory() - runtime.freeMemory());
String free = tmp.adjust(runtime.freeMemory());