java 内存映射文件 主要应用_java – 内存映射文件:优点和缺点?

My first question is what are the different possibilities for two applications to share data?

正如S.Lott指出的那样,有很多机制:

My second question is what are the pros and cons of using memory-mapped files?

优点:

>非常快 – 根据您访问数据的方式,可能会使用zero-copy机制直接对数据进行操作而不会受到速度损失.必须小心以一致的方式更新对象.

>应该非常便携 – 可以在Unix系统上使用大约25年(给或拿),and apparently Windows has mechanisms too.

缺点:

>单系统共享.如果要在多台计算机上分发应用程序,共享内存不是一个很好的选择. Distributed shared memory systems are available,但他们觉得我的思维方式非常像错误的界面.

>即使在单个系统上,如果内存位于单个NUMA node上,但需要由来自多个节点的处理器访问,则与给予每个节点自己的内存段相比,节点间请求可能会显着减慢处理速度.

>您不能只存储指针 – 所有内容都必须存储为基址的偏移量,因为内存可能会映射到不同进程中的不同位置.我不知道这对Java对象意味着什么,尽管可能有人聪明地尽力让它对Java程序员透明.如果您没有使用他们提供的机制,那么您可能必须自己完成工作. (如果没有Java中的实际指针,也许这不是很麻烦.)

>事实证明,持续更新对象非常困难.在消息传递系统中传递immutable objects通常会导致程序具有较少的并发错误. (Erlang中的并发编程感觉非常自然而直接.更多imperative languages中的并发编程往往会引入大量新的并发控制:semaphores,mutexes,spinlocks,monitors).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值