我的java程序可以使用磁盘作为大型对象的堆吗?
我想使用java来处理最终将超过100GB的数据结构。我需要以1:1的比例写和读,尽可能多的每秒。在Java格式中,它是一个HashMap>。我可以像在RAM中一样在磁盘中保存和操作它吗?这可以兼作持久性方案吗?可以,但您可能首先要了解访问模式。如果你随机搜索了很多次,而你没有使用SSD,那么每一次IO都会有毫秒的等待时间。如果您只在某些区域内搜索,您可能希望将这些部分猛击到内存中。尽量按照访问模式将其数据组织成集群。不,在Java中不能将磁盘文件用作堆。您可以将文件映射到地址空间,但它不会是堆的一部分;i、 您将无法使用它来保存常规Java对象 要做到这一点,最简单的方法(如果您有足够的RAM,并且运行的是64位操作系统和64位JVM)就是给JVM一个巨大的堆。但我想这不是你的选择。因此,您的选择将是:我的java程序可以使用磁盘作为大型对象的堆吗?,java,memory,object,heap,Java,Memory,Object,Heap,我想使用java来处理最终将超过100GB的数据结构。我需要以1:1的比例写和读,尽可能多的每秒。在Java格式中,它是一个HashMap>。我可以像在RAM中一样在磁盘中保存和操作它吗?这可以兼作持久性方案吗?可以,但您可能首先要了解访问模式。如果你随机搜索了很多次,而你没有使用SSD,那么每一次IO都会有毫秒的等待时间。如果您只在某些区域内搜索,您可能希望将这些部分猛击到内存中。尽量按照访问模式将其数据组织成集群。不,在Java中不能将磁盘文件用作堆。您可以将文件映射到地址空间,但它不会是堆
- 使用常规数据库
- 使用现有的现成Java数据缓存产品
- 尝试滚动您自己的数据缓存