1

我有一个用例,我必须多次运行 java 应用程序。应用程序的性能瓶颈是它的初始化时间。在初始化时,应用程序将 1000 万条记录从磁盘加载到内存数据结构中,然后应用程序在内存数据结构中进行大约 1 亿次查找。

我想要做的是避免一次又一次地从磁盘加载记录。我的应用程序使用共享内存进行数据结构查找。我不想使用远程方法调用/Web 服务调用,因为这对于查找部分来说成本太高。

另外,我没有使用线程的选项。

4

3 回答 3

1

我会在内存映射文件中构建数据结构。这些可以在进程之间共享,也可以在同一进程的运行中共享。但是,使用它们并非易事,因为您必须确定如何在字节级别构建数据。即你不能使用Java 对象。(从好的方面来说,这意味着几乎没有 GC 开销)

于 2012-10-23T11:45:55.377 回答
0

虽然我从未使用过它,但看起来类数据共享可能会对您有所帮助。

于 2012-10-23T17:16:21.393 回答
0

理想情况下,您应该将此应用程序变成服务器,并且您运行的命令应该通过请求-响应机制获取所需的数据。

另一种选择是创建所需数据的快照,每次运行程序时都可以快速加载这些数据。

于 2012-10-23T11:37:59.657 回答