既存のJavaコードベースからすべてのシステムコールを削除するように取り組んでいます。アプリケーションは、市販のクローズドソースのJVMで実行します。JVMがgetRuntime.exec()javaを介してシステムコールを行うと、JVMプロセスフォーク全体が呼び出され、パフォーマンスが大幅に低下します。私たちはLinuxプラットフォームで実行していますが、理想的には可能な限り移植性を維持するように努めています。
getRuntime.exec()メソッドを介して現在使用しているsync()呼び出しを置き換える際に問題が発生しています。このsync()メソッドとflush()もあることを私は知っています。そして、この投稿に基づいて、開いているすべてのファイルストリームと同期してフラッシュすることを検討しています。
私の問題は、そこにあるファイルストリームと記述子について直接の知識がないことです。これを回避する1つの方法は、/ proc /(jvmプロセス番号)/ fdフォルダーを確認することだと思いましたが、純粋なJavaを使用してJVMプロセス番号を確実に取得するための良い方法を見つけることができません。特定のクラス(FileDescriptorクラス)のすべてのオブジェクトを取得できる可能性があると思いましたが、私が読んでいることから、これも実行可能ではありません。
純粋なJavaで*nixsync()呼び出しを複製する方法について誰かが提案を持っていますか?