![](/img/trans.png)
[英]Why is Throwable.fillInStackTrace() method public? Why would someone use it?
[英]Why would someone use a Memory Mapped File in PRIVATE mode?
除了:
私有:对结果缓冲区所做的更改不会传播到文件,并且对映射相同文件的其他程序不可见; 相反,它们将导致创建缓冲区修改部分的私有副本。 (MapMode.PRIVATE)
在什么情况下它是可取的,它有什么优点?
如果您在大型数据集上运行遗传算法实验,您可能希望启动八个或更多客户端——每个内核一个,每个内核两个,等等——以使用相同的起始数据,对数据,然后只保存随机数生成器的起始种子的“最终结果”和衡量算法的“分数”。
中间结果可能没有任何价值,您不希望任何客户端看到来自其他客户端的中间结果,也不希望污染初始种子数据。
在什么情况下它是可取的,它有什么优点?
当您想要对不应该持久化的映射数据进行临时更改时,可以使用它,并且不应该对其他可能已映射文件的应用程序可见。
在这种用例中,应用程序可以将文件内容显式复制到byte[]
,也可以在PRIVATE
模式下映射文件
期望 JVM + OS 将以比 Java 应用程序代码更有效的方式处理私有模式下的数据复制。 例如,当应用程序第一次尝试更新其缓冲区的相应区域时,JVM + OS 可能会使用本机虚拟内存子系统来复制映射 VM 页面中的数据。
MapMode.PRIVATE
的实际实现方式是特定于平台的。 如果您需要了解详细信息,请参阅您的 JVM 源代码和操作系统源代码。
例如,在 Linux 系统中,进程的 .text 段以 PRIVATE 模式加载,事实上,它们最初以 Copy On Write 模式共享内存,如果进程中的一个尝试修改其代码,则只有该进程会受到影响,并且不是对文件系统的任何传播。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.