hadoop yarn里用了RPC调用。NM里面文件本地化类ContainerLocalizer用RPC心跳方式跟本机的ResourceLocalizationService通信。
用shared memory还要调到native层去,不知道会不会比tcp/ip快?
可以用文件,考虑锁的问题。但是文件貌似不能两边一起写,否则会乱的。也许弄两个文件,每个都是单工?这样还要监视文件是否发生变化。
还可以用剪切板,干扰比较严重
可以socket,socket是双工的,读写时都不用加锁防止另一边占用socket。
named pipe
rmi
memory mapped file
你指的是MappedByteBuffer么?
java.nio.channels.FileChannel abstract MappedByteBuffer map(FileChannel.MapMode mode, long position, long size)
将此通道的文件区域直接映射到内存中。
锁定了还咋进程通信啊,我看了api doc,很多地方都是实现相关的,不靠谱
可以锁定某个文件区域,以阻止其他程序对其进行访问。
共享内存快,jni不会消耗什么。。
jni本身效率就很低,还有个非常大的问题:一旦native code 发生异常会导致jvm down掉。
jni在这里绝不会是瓶颈,几行本地代码,仔细写问题不大的
jni 中间走 object 注定慢
http://www.newsmth.net/nForum/#!article/Java/170307