可以交换的内存可以直接读取的Java?

当内核交换到磁盘的东西,这个数据可以通过过程直接从交换读取? 或者它必须被放回到物理内存(因此在vmstat中生成这样的活动)

我有一个java进程,似乎有很多交换数据( https://paste.fedoraproject.org/542447/raw/ )而当我执行它真的很慢,但我没有看到任何这样的活动。

重新启动的过程中,它是非常快,再smaps现在在交换中列出0字节。

Vmstat信息: https ://paste.fedoraproject.org/542453/raw/

谢谢,

包括java在内的进程不知道内存的位置。 所有的java知道是试图访问内存位置0x00234525。 当内核看到访问时,它将从RAM中返回值,或者将内存从swap交换到RAM,并从RAM返回值。 在访问页面之前,页面必须被读入RAM中。

也就是说,单行vmstat显示整个正常运行时间的平均值并不是很有用。 在进程运行时运行vmstat 5以查看实时数据。