Java 优化RMI服务响应

Java 优化RMI服务响应,java,rmi,Java,Rmi,我正在写一个服务器客户端应用程序,最好的性能是必须的;我使用RMI进行服务器-客户端通信,服务器使用mySQL数据库 现在在客户端,我有一个名为 getLinks() 它在服务器上调用相同的方法,问题是该方法返回大约700Mb的数据,这需要一些时间来获取,需要更多的时间来分析 然后我为每个链接设置一些值: for (Link l : myService.getLinks()) l.setSelected(false); 我现在想到的只是首先获取链接Id(因为这将是一个较小的

我正在写一个服务器客户端应用程序,最好的性能是必须的;我使用RMI进行服务器-客户端通信,服务器使用mySQL数据库

现在在客户端,我有一个名为

    getLinks()     
它在服务器上调用相同的方法,问题是该方法返回大约700Mb的数据,这需要一些时间来获取,需要更多的时间来分析

然后我为每个链接设置一些值:

for (Link l : myService.getLinks()) l.setSelected(false);
我现在想到的只是首先获取链接Id(因为这将是一个较小的数据),然后使用异步方法按Id获取每个链接(每个链接需要一个服务调用);然后设置链接值

这是最好的方法吗?是否有其他方法逐个获取RMI数据(一个方法调用和多个返回)


C#中是否有类似(收益回报率)的内容?

您还可以创建一个分页方法,该方法接收初始id(或位置,如果id不是连续的)和长度,这样您就不会发送所有id的两次

是链接对象还是远程对象?如果不是的话,我真的看不出代码的意义,因为它只在客户端对象中本地设置了一些东西,这些东西会立即被丢弃

假设它们是远程对象,最好将整个更新发送到服务器,并告诉它更新整个集合,例如setLinksSelected(布尔值),服务器在其中执行迭代


但我也会对通过RMI更新、甚至传输700Mb数据持谨慎态度,无论您采用何种方式。这是大量的数据。

链接对象是数据库中链接表中的行,它们不会被丢弃;(getLinks)方法将所有内容存储在HasMap(links)中,并在整个应用程序中使用,并在应用程序退出时销毁。第一次调用(getLinks)时出现问题,因为(links==null)请查看我的评论@EJP,链接存储在整个应用程序都需要的HashMap(links)中。