Java堆转储权限

Abh*_*eri 7 heap file-permissions jvm jmap heap-dump

在Linux机器(以及很可能是Unix机器)中生成的Java堆转储具有受限访问权限.堆只能由进程的所有者读取(ACL掩码设置为600).我知道这是出于安全原因.但是,我无法找到任何引用或解释行为的文档.任何人都可以指向我的文档(如果有的话)?另外,有没有办法覆盖这种行为?

fgl*_*lez 5

如果您对深入的 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 }
Run Code Online (Sandbox Code Playgroud)


小智 0

堆转储由 JVM 进程写入,该进程以特定用户身份运行。就像任何Linux 进程创建的任何文件一样,它将由该用户拥有。

如果您想要实际的文档,这里是。看看下面的描述O_CREAT