可能であれば、JNI を含まない Java の優れたソリューションがあるかどうか疑問に思っています。
ありません。アプリケーションのメモリへの固定はオペレーティング システム固有であり、標準の JVM API ではサポートされていません。
システム全体のパフォーマンスに深刻な影響を与える可能性があるため、かなり危険なことを実行することを固定します。その結果、それをサポートするすべてのシステムで root 権限 (または同等の権限) が必要になります。
私は個人的にこれをやろうとはしませんし、これを行うアプリケーションを使用することを非常に躊躇します. あなたが達成しようとしていることが何であれ、(おそらく)他の方法で行う方がよいでしょう...
安全のためにやりたい。
おー。それで、あなたが実際にやろうとしているのは、ディスク上のスワップ/ページスペースに「超秘密」のものが書き込まれるのを止めることですか?
mlock が何かがスワップに書き込まれるのを防ぐとは確信していません。
誰かがスワップ ディスクにアクセスできる場合、他のメカニズムを使用してデータを抽出できる可能性があります。たとえば、「/dev/mem」または同等のものを使用して、物理メモリまたはプロセスの仮想メモリからデータを読み取ります。
スワップ ディスク上の「極秘」要素の問題に対処する通常の方法は、文字列の代わりに char 配列を使用して要素を保持し、処理が終了したらすぐにゼロで手動で上書きすることです。
または、ディスクレベルの暗号化を調査してください。