日期:2014-05-20  浏览次数:20596 次

一个jvm请求另一个jvm中的数据,哪种方式效率比较高
我有一台70G内存的linux计算机,上面每天都要跑5个crontab程序,5个程序的开头都要去读取大文件,存到内存中,这个大对象大约有20G左右,每次读取大文件,都要花掉20分钟左右。

我每次要找程序的bug,测试起来非常的不方便,每测一次都要等个至少20分钟。

我想能不能写第6个程序,这个程序是24小时处在running状态中,每天到了凌晨0点,就自动去读取大文件,从内存中删掉昨天的旧的20G大对象,然后在内存中生成新一天的20G大对象,0点20分开始就可以为另外5个程序提供数据服务了。另外5个程序,每个程序都可以省去20分钟的时间。

我现在能想到的办法是用Socket,还有rmi,或者web server

但是我不知道哪个效率比较高,因为我这数据量挺大的。

想问下哪个效率比较高?(如果有其他更好的解决办法,也可以向我推荐)


------解决方案--------------------
直接用socket不靠谱,传的东西还是要么弄成xml,这就成了web service,要么序列化,这就成了rmi

webservice效率是不够好的,且传输的xml中很多内容如标签并不是必须品,只是为了自身的处理,增大了传输负担

扩展rmi,可以压缩序列化的byte[]
------解决方案--------------------
不知道是否可以考虑共享内存。
------解决方案--------------------
20G的文件,你打开读取都要花20分钟,你用socket、rmi、webservice传数据,而且是给5个程序传,效率也不会高吧...............
------解决方案--------------------
是不是可以试试将你的对象序列化,如果这五个cron用的是同一个类
或者能不能第六个程序是这五个程序的manager,由他来初始化数据并且控制其他五个程序的运行时间,而不是用crontab