考虑到在Linux上运行的Java应用程序,我想测量Java 应用程序的mmapped内存量以及JVM本身的mmapped内存量。
问题1: 我可以使用/ proc / {pid} / map来跟踪应用程序的mmap调用。这个输出有什么办法可以帮助我测量这个差分存储器映射?如果没有,还有其他工具可以帮助我吗?
问题2: 如果Java 应用程序 (不是JVM)打开一个大文件,它是否也会被mmap?如果是,我可以在Java流程图中区分和测量这个mmapped区域的大小吗?
答案 0 :(得分:1)
也可以访问的BufferPoolMXBean via visualvm报告支持字节缓冲区的映射。可以通过NMT
跟踪其他JVM内部映射答案 1 :(得分:0)
这个输出有没有办法帮助我测量这个差分存储器映射?
是的,您必须阅读该文件并查看其中包含的内容。有关详细信息,请使用/proc/{pid}/smaps
如果是Java应用程序(不是JVM)
没有办法区分。
打开一个大文件,是否也会进行mmap?
如果在FileChannel上使用mmap
命令,则只对内存映射文件。
我可以在Java流程图中区分和测量这个mmapped区域的大小吗?
您可以获取映射的每个区域的文件,请参阅上面的问题。