区分Java应用程序mmaped内存和Linux上的JVM mmapped内存

时间:2017-02-07 13:39:07

标签: java linux memory jvm

考虑到在Linux上运行的Java应用程序,我想测量Java 应用程序的mmapped内存量以及JVM本身的mmapped内存量。

问题1: 我可以使用/ proc / {pid} / map来跟踪应用程序的mmap调用。这个输出有什么办法可以帮助我测量这个差分存储器映射?如果没有,还有其他工具可以帮助我吗?

问题2: 如果Java 应用程序 (不是JVM)打开一个大文件,它是否也会被mmap?如果是,我可以在Java流程图中区分和测量这个mmapped区域的大小吗?

2 个答案:

答案 0 :(得分:1)

也可以访问的BufferPoolMXBean via visualvm报告支持字节缓冲区的映射。可以通过NMT

跟踪其他JVM内部映射

答案 1 :(得分:0)

  

这个输出有没有办法帮助我测量这个差分存储器映射?

是的,您必须阅读该文件并查看其中包含的内容。有关详细信息,请使用/proc/{pid}/smaps

  

如果是Java应用程序(不是JVM)

没有办法区分。

  

打开一个大文件,是否也会进行mmap?

如果在FileChannel上使用mmap命令,则只对内存映射文件。

  

我可以在Java流程图中区分和测量这个mmapped区域的大小吗?

您可以获取映射的每个区域的文件,请参阅上面的问题。