9

Linuxマシン(およびおそらくUnixマシン)で生成されたJavaヒープダンプでは、アクセスが制限されています。ヒープは、プロセスの所有者のみが読み取ることができます(ACLマスクは600に設定されています)。これはセキュリティ上の理由によるものだと理解しています。ただし、動作を参照または説明しているドキュメントは見つかりませんでした。誰かが私にドキュメント(もしあれば)を教えてもらえますか?また、この動作をオーバーライドする方法はありますか?

4

2 に答える 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 に答える