繁体   English   中英

分页空间,JVM和内存映射文件(nio)

[英]Paging space, the JVM, and Memory Mapped files (nio)

我最近阅读了一篇文章,该文章声称使用内存映射文件可以节省调页空间。

问题1:为什么这有很大的好处?

也就是说,为澄清起见,我会提出以下问题:

问题2:如果我有一个JVM(在标准Linux发行版上运行1G或RAM),并且打开了800MB文件,那么调页空间将占用JVM内存的百分之几?

此外,该文件还将占用哪些其他资源?

我想我要问的真正问题是:

问题3:在处理JVM读取的大文件时,我们如何定义“分页空间”,以及内存映射文件为应用程序提供的关键(非显而易见)好处是什么(即何时将它们理想地替换为常规旧文件?流)?

我认为这与使用JVM文件内存映射实现分页的方式有关。

问题1:为什么这有很大的好处?

我认为它是指交换空间。 如果使用堆或直接内存,则可以将其交换为交换空间。 这是一个非常糟糕的主意,从性能上来说是明智的,但是它可能会发生。 内存映射文件被分页到那些文件。

节省交换空间并不是IMHO的大问题,但这确实意味着您无需重新配置系统,因为您的应用程序要使用大量的虚拟内存。

您永远不希望将堆交换到磁盘。

问题2:如果我有一个JVM(在标准Linux发行版上运行1G或RAM),并且打开了800MB文件,那么调页空间将占用JVM内存的百分之几?

直接内存和内存映射文件不计入您的堆。 如果您的堆使用了将近1 G,并且最大使用了1 G,则可以打开800 MB文件。 在任何情况下都不会使用交换空间。

问题3:在处理JVM读取的大文件时,我们如何定义“分页空间”,以及内存映射文件的主要优点(不明显)是什么?

我不确切知道您对调页空间的意思。 也许您可以定义调页空间对您意味着什么。

内存映射文件的主要好处是,您可以利用大量数据,并使OS担心要读取或写入磁盘的哪些部分。 该区域可能比物理内存大得多,甚至比您拥有的磁盘空间大。

将8 TB文件映射到Java内存的示例http://vanillajava.blogspot.com/2011/12/using-memory-mapped-file-for-huge.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM