Linuxマシン(およびおそらくUnixマシン)で生成されたJavaヒープダンプでは、アクセスが制限されています。ヒープは、プロセスの所有者のみが読み取ることができます(ACLマスクは600に設定されています)。これはセキュリティ上の理由によるものだと理解しています。ただし、動作を参照または説明しているドキュメントは見つかりませんでした。誰かが私にドキュメント(もしあれば)を教えてもらえますか?また、この動作をオーバーライドする方法はありますか?
質問する
4773 次
2 に答える
4
深いJVM内部に興味がある場合は、OpenJDKのソースコードを確認できます。
HeapDumperサービスへのリンクは次のとおりです。http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/services/heapDumper.cpp
掘り下げると、JVMが次のバイナリファイルを作成していることがわかります。S_IREAD | S_IWRITE
4373 // create binary file, rewriting existing file if required
4374 int os::create_binary_file(const char* path, bool rewrite_existing) {
4375 int oflags = O_WRONLY | O_CREAT;
4376 if (!rewrite_existing) {
4377 oflags |= O_EXCL;
4378 }
4379 return ::open64(path, oflags, S_IREAD | S_IWRITE);
4380 }
于 2012-10-11T10:52:08.007 に答える
0
ヒープ ダンプは、特定のユーザーとして実行される JVM プロセスによって書き込まれます。Linux プロセスで作成されたファイルと同様に、そのユーザーが所有します。
実際のドキュメントが必要な場合は、ここにあります。の下の説明を見てくださいO_CREAT
。
于 2012-10-04T19:04:53.830 に答える