1

2010年からのこのスタックオーバーフローの質問を見つけました: Javaプロセスをメモリにロックまたは固定します

基本的に、Javaプロセスをメモリにロックする方法はJNIを使​​用することです。それが指す例は壊れたリンクです。2013 年になった今、私の質問は..もっと良い方法はありますか? そして、誰かが Java で mlock を使用している例はありますか? 私は JNI と C コード全般に非常に不慣れですが、Java にはかなり精通しています (ただし、JNI を使用したことはありません)。

ありがとう

4

2 に答える 2

2

可能であれば、JNI を含まない Java の優れたソリューションがあるかどうか疑問に思っています。

ありません。アプリケーションのメモリへの固定はオペレーティング システム固有であり、標準の JVM API ではサポートされていません。


システム全体のパフォーマンスに深刻な影響を与える可能性があるため、かなり危険なことを実行することを固定します。その結果、それをサポートするすべてのシステムで root 権限 (または同等の権限) が必要になります

私は個人的にこれをやろうとはしませんし、これを行うアプリケーションを使用することを非常に躊躇します. あなたが達成しようとしていることが何であれ、(おそらく)他の方法で行う方がよいでしょう...


安全のためにやりたい。

おー。それで、あなたが実際にやろうとしているのは、ディスク上のスワップ/ページスペースに「超秘密」のものが書き込まれるのを止めることですか?

  1. mlock が何かがスワップに書き込まれるのを防ぐとは確信していません。

  2. 誰かがスワップ ディスクにアクセスできる場合、他のメカニズムを使用してデータを抽出できる可能性があります。たとえば、「/dev/mem」または同等のものを使用して、物理メモリまたはプロセスの仮想メモリからデータを読み取ります。

  3. スワップ ディスク上の「極秘」要素の問題に対処する通常の方法は、文字列の代わりに char 配列を使用して要素を保持し、処理が終了したらすぐにゼロで手動で上書きすることです。

  4. または、ディスクレベルの暗号化を調査してください。

于 2013-02-19T23:57:36.390 に答える