我需要在同一台机器上的两个Java应用程序之间共享数据(两个不同的JVM)。我需要分享的数据很大(约7 GB)。这些应用程序必须非常快地访问数据,因为它们必须以非常高的速率响应传入的查询。我不希望这些应用程序各自拥有数据的副本。
我发现其中一个选项是使用内存映射文件。应用程序A从某个地方获取数据(比如数据库),并将其存储在文件中。然后应用程序B可以使用java.nio访问这些文件。我不知道内存映射文件的确切工作原理,我只知道数据存储在文件中,而该文件(或其中的一部分)被映射到内存区域(虚拟内存?)。所以,这两个应用程序可以在内存中读写数据,并且更改会自动提交到文件中(我猜是这样?)。我也不知道完全映射在内存中的文件是否有最大大小限制。
我的第一个问题是在这种情况下两个应用程序分享数据的不同可能性是什么(我是指考虑到数据量非常大,对此数据的访问必须非常快)?我在这里强调这个问题与内存映射I/O无关,它只是为了了解解决相同问题的其他方法。
我的第二个问题是使用内存映射文件的利弊是什么?
谢谢
我发现其中一个选项是使用内存映射文件。应用程序A从某个地方获取数据(比如数据库),并将其存储在文件中。然后应用程序B可以使用java.nio访问这些文件。我不知道内存映射文件的确切工作原理,我只知道数据存储在文件中,而该文件(或其中的一部分)被映射到内存区域(虚拟内存?)。所以,这两个应用程序可以在内存中读写数据,并且更改会自动提交到文件中(我猜是这样?)。我也不知道完全映射在内存中的文件是否有最大大小限制。
我的第一个问题是在这种情况下两个应用程序分享数据的不同可能性是什么(我是指考虑到数据量非常大,对此数据的访问必须非常快)?我在这里强调这个问题与内存映射I/O无关,它只是为了了解解决相同问题的其他方法。
我的第二个问题是使用内存映射文件的利弊是什么?
谢谢