Java内存不足时如何将数据写入磁盘

3
我正在使用大量数据测试数据结构性能。
作为一个临时解决办法(参见此处),我想将内存写入磁盘。
我想要测试非常大的数据集 - 当Java虚拟机耗尽内存时,如何使其将部分内存写入磁盘?

不,我正在测试van emde boas树和其他数据结构,且所有数据都存储在内存中。这仍然可行吗? - Justin
1
我认为你不能告诉JVM在RAM满时使用文件。你将不得不编写自己的数据结构,从/写入文件,可能缓冲数据。 - Code-Apprentice
2
你是否被困在使用32位Java的境地?虽然我不是Java开发人员,但我认为如果你运行64位进程,你将能够访问更多的内存,此外你的操作系统分页系统也会为你处理磁盘交换... - Simon MᶜKenzie
我正在使用64位Java(或者当我调用检查时它会这样显示)。 - Justin
1
可能是 https://dev59.com/M2445IYBdhLWcg3wg6xn 的重复问题。 - Jim Garrison
显示剩余3条评论
2个回答

0

既然我们在谈论临时解决方案,如果您需要一些额外的空间,您可以增加页面文件(在大多数Linux发行版中称为交换文件)。

这是来自微软的链接: http://windows.microsoft.com/en-us/windows-vista/change-the-size-of-virtual-memory

Linux: http://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/

现在让我说一下,这不是一个好的长期解决方案,但我理解有时开发人员只需要让它工作。如果这是将来会在生产环境中使用的东西,您可能需要考虑使用像Hadoop这样的工具。它允许您在多个JVM上分布式处理数据 - 这是一个专为像您描述的“大数据”应用程序而构建的工具。

0
也许你可以使用流或一些缓冲流。我认为这将是测试这种结构的最佳选择。如果你可以使用流从磁盘读取,并且不会创建任何额外的对象(只有必要的对象),那么你就可以将所有JVM内存用于你的结构。但也许你可以更详细地描述你的问题?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接