2009-03-03 12 views

答えて

11

短い答えはいいえです。

Javaでは、スワップインとRAMに「固定」されているものを制御することはできません。

この種のことについて心配しているのは、通常、プロジェクトに何か間違っているという印です。 OSは、スワップされるべきものとそうでないものとを取り組むよりはるかに良い仕事をするでしょう。あなたの仕事は、基になるVM/OSがやろうとしていることを二度と推測しようとせず、あなたの機能と優れたデザインを提供することに専念することです。

1

Hey!あなたは管理された言語でプログラミングしています。なぜあなたはこれらについて考えているのですか?あなたがこれらのものをあなたの心から奪うことができないなら、いつでもCでプログラムすることができます。

+0

もう1つのオプションは、アプリケーションがすべてを一度にメモリに保持するように強制するものではないと思います。疑問は、実際のニーズよりも好奇心から来ています。 Cで行うことは可能ですか? –

+0

いくつかのメモリページをメモリに張り付けることができます。これが、ほとんどのVM環境が行うことです。 –

1

短い答えは(上記のとおり):しないでください:-)。

しかし、原則として可能です。ほとんどのOSは、特定のメモリ領域がスワップされることを「ロック」することを許可している(例えば、Linuxではmlock(2)、WindowsではVirtualLock)。

VMは、この機能を適切なAPIを介してJavaアプリケーションに公開する可能性があります。しかし、私が知っているVMはありません。そのため、VMを変更する必要があります。

1

定期的にアクセスすると、その時点でどのページガベージコレクション中に物事を動かす)は、他の何かがもっと積極的にメモリを要求していない限り、ページアウトされません。しかし、別のページに移動しないようにJVMに指示する方法はなく、OSはページについてしか知りません。

3

この問題はEclipseでも非常に顕著で、KeepResidentのダーティハックプラグイン(http://suif.stanford.edu/pub/keepresident/)はそれを回避します。

開始するのが良いかもしれませんか?私は普及していないので、これは標準のEclipseディストリビューションに統合されているのでしょうか?

1

ない答えが、欠けているが、コメントを指して、私は、このオプションを予約:)

スワップに情報を格納しないようにする理由があります。ディスク上に永遠を費やすべきではないパスワードやその他の機密情報であること。また、週末の後に私のPCに戻ってきて、私はすぐに利用可能なメモリにいくつかのものをしたいと思います。

(Java以外)ネイティブに、各オペレーティングシステム/ほとんどのオペレーティングシステムでこれを行う方法があります。窓でこれは間違いなく可能です。しかし、まっすぐJavaの(JNIと思う)ではありません。 このオプションがどれほど欲しいかに応じて、ビデオメモリや、スワップアウトしない他のハードウェアデバイスを常に使用することができます。これにより、Joglのような標準的なJava APIを使用して情報を格納することができます。しかし、どういうわけか私はそれがあなたが探している実装/結果との文脈にあるのか疑問です。

0

基本的に、JVM全体をメインメモリに常時保存したいと考えています。

関連する問題