2010-12-07 57 views
6

jpsの使い方を学んでいます。このページはjpsです。Javaのlvmidとは何ですか?

lvmidは、オペレーティングシステムのJVMプロセスのプロセス識別子ですが、必ずしもそうである必要はありません。

私は、どのような状況でjpsがオペレーティングシステムのプロセス識別子ではないのでしょうか?

誰でもお手伝いしますか?

答えて

3

すべてのオペレーティングシステムに「プロセスID」という概念がありますか?そうでないかもしれない。それらの中には、整数ではなく完全に異なる形式のプロセスIDを表すものもあります。プロセスIDはプラットフォーム固有の概念であり、将来変更される可能性があります。 Javaはプラットフォームに依存しないように設計されています。これが、常に機能するとは限らない理由です。

現在、現在使用されている主要なオペレーティングシステムでは、lvmidは常にJVMプロセスのオペレーティングシステムのプロセスIDを返す必要があります。

+0

ですが、この質問に答えるためにありがとうございます。あなたの答えは意味をなさないと思います。 – khotyn

+0

もっと情報がありたいですし、どのオペレーティングシステムで 'lvmid'が' pid'にマッチすることが保証されていますか? Reasonは、Javaで実行中のバックグラウンドサービスを開始および停止するスクリプトです.pidをフェッチする必要があり、classpath宣言が長すぎるため 'ps 'コマンドでルックアップすることができますが、' jps'を使用して 'pid'を得ることができます。 ( 'lvmid <> pid' !!!を除いて)動作することが保証されています。 – ADTC

1

lvmidは通常、O/S pid(プロセスID)と同じですが、同じである必要はありません。オペレーティングシステムの中には、それらを区別するものがあります(私にはわからない)。

0

CygWin上で動作するJavaプロセスとネイティブLinuxマシン上で動作するJavaプロセスが、pidとは異なるlvmidを持つことが発見されました。これにより、私のスクリプトはlvmidを検索して、間違ったpidを渡していたことでJavaプロセスを停止させました。

あなたは私のpicから見ることができるように、lvmidはは6704ですが、pidは19248

enter image description here

関連する問題