2016-11-30 14 views
1

私はプログラムとメモリスワッピングが発生しているという強い疑いを持っています。私はそれが事実であると信じている理由は、プログラムが時折ハングするという事実です。ロギングを開始したとき、プログラムが異なる場所にぶら下がり始め、さまざまな方法が実行されるため、事態はさらに混乱しました。
現時点では、プログラム専用の2GBの32ビットIBM Javaを使用していますので、私はそのメモリにぴったりです。 x64への変更は可能ですが、それ以前:
質問1:実行時にプログラムによるメモリスワッピングを検出できますか?または、どのようにすれば、少なくとも、myslefにスワッピングが発生しているというヒント(ロギングを介して)を与えることができますか?
今のところ、私はメモリ使用量ログを入手できませんが、xmxが2GIGであれば、それはちょうどRAMであり、メモリスワップが発生すると、十分なメモリがないと思われますか?
質問2:私は今考えているように、ガベージコレングの開始を記録できますか?実行時に検出できますか?
EDIT:前記プログラムは、大量のデータをデータベースからエクスポートします。
EDIT2: givem JVMのメモリスワップをプログラムで禁止することはできますか?Java - 実行時のメモリスワップの検出

+1

OSのもので、Javaのものではありません – the8472

+2

/proc/swapsはそのような情報を記録します。ファイルを監視することによって、スワップ動作を検出することができます。つまり、OSはアプリケーションではなくメモリスワップを決定します。 – JQian

+1

スワッピングとガベージコレクションは全く異なる2つのことであることをご理解いただきたいと思います。物理メモリが不足すると、オペレーティングシステムがスワップするため、64ビットJVMに切り替えても実際の物理メモリは変更されません。 64ビットJVMはより多くのメモリを使用できるため、物理メモリが不足する可能性もあります。 – Holger

答えて

2

実行時にメモリスワップをプログラムで検出できますか?

スワップがどれだけ使用されているか、スワップパーティションに書き込まれている量をOSで監視することができます。あなたはこれをどうyulu OSに依存するのですか?

メモリスワップが発生すると、十分なメモリがないように見えますか?

メモリが十分な場合、スワッピングは発生しません。注意:スワッピングが発生しなくても、より多くのメモリが役に立たない場合もあります。ほとんどの場合、アプリケーションメモリ以外のものが必要です。ディスクキャッシュも重要です。

ガベージコレンナリングの開始をログに記録できますか?

他のプロセスで実行することはできますが、ストップワールドアクションが実行されている間は何も実行できません。 x64のに

の変更は可能ですが、その前に:

のJava 5.0は、32ビットが最善であるかもしれ私が言っていた最後のバージョンでした。それは10年前のことでした。

プログラムは、データベースから大量のデータをエクスポートします。

1 GBは最近のコーヒー杯のコストよりも低いです。数十GBでも気にする必要はありません。数百GBのGBが大きくなっており、数TBの場合は面白い問題があります。私のクライアントの中には3 TBのマシンがあり、非常に大量のデータを持っています。 100 TB。

私は、私の最も古い娘に何年も使われていなかった古いコンピュータを与え、彼女は私の8歳の娘にそれを与えました。それは24 GBのメモリを持ち、主にYouTubeのビデオを見るために使っています。

givem JVMのメモリスワップをプログラムで禁止することはできますか?

JNIを使​​用してメモリにロックすることはできますが、マシンがヒープスペースをスワップすると、マシンは死に至ることがあります。

関連する問題