2009-07-25 20 views
3

I/O prioritizationのVista +機能を使用したいと考えています。 Javaの操作(たとえば、Java 7のライブラリ)でI/O優先順位を設定するプラットフォームに依存しない方法はありますか、またはスリープフィルタまたはJNxソリューションに戻す必要がありますか?他のプラットフォームにも同様の機能がありますか?JavaでのI/Oの優先順位付け

+0

あなたは正確に何と答えますか? IOの優先順位付けを実装している実際のライブラリですか? –

+0

@darthcoder:本質的によりポジティブな答えで、潜在的にライブラリへのリンクなどがあります。私は現在の答えに満足していません。これは、賞金のための優れた状況です。興味がある? – akarnokd

+0

私は私の意見で満足のいく回答を得ていないので、私は最も近いものを受け入れました。とにかく自分の目標を達成するために自分のIOライブラリをロールアップする必要があります。みんなありがとう。 – akarnokd

答えて

2

これは、Javaがサポートするのが難しい種類のものです。これは、基本となるオペレーティングシステムの機能に大きく依存するためです。 Javaは、複数のプラットフォームで同じように機能するAPIを提供することを非常に難しくしています。

この場合、Java APIは、複数のバージョンのWindows、複数のバージョンのLinux、Solaris、およびその他のサードパーティのプラットフォームにまたがって実装可能である必要があります(これは必ずしも成功するとは限りませんが、別のトピックです)。 。 OSプラットフォームの機能性にマッピングできるIO優先順位のプラットフォームに依存しないモデルが登場するのは難しいでしょう。

今のところ、Java以外のプラットフォーム固有のソリューションを探して、必要なチューニング調整を行うことをお勧めします。例えばProcess et alを使用して外部コマンドを実行するか、JVMを起動する前にラッパースクリプトで作業してください。

2

Google検索では、JavaがIO優先順位付けをまだサポートしていないようです。

Windows Vistaはそうですが、私はそれについて何も知らない。それはプロセスごとであるか、より細分化されていますか?

Linux 2.6.13以降ではionice(1)がサポートされているため、プロセスごとにIO優先度が設定されます。

+0

Vista +にはI/Oハンドルごとにそれがあります。私は、この機能を公開するライブラリを希望していました。 Linuxの情報をありがとう。 – akarnokd

3

本当にこの機能を使用する必要があり、Javaでこれを本当に行いたい場合は、いつでもJava JNIを使用して、I/OハンドラのカスタムC/C++実装にJVMをフックできます。ネイティブ(OS固有の)コードを記述し、Javaアプリケーションから呼び出すことができます。

+0

ありがとう、私はすでにそれを知っていた。私はそれをやるより便利な方法がほしいと思っていました。 – akarnokd

関連する問題