代码改变世界

同一个主机上的JVM实例之间通信

2014-08-15 21:47  Loull  阅读(1422)  评论(0编辑  收藏  举报

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