【问题标题】:write to disk when run out of ram java用完ram java时写入磁盘
【发布时间】:2013-03-25 21:45:12
【问题描述】:

我正在用非常大的数据测试数据结构的性能。

作为临时解决方法 (see here),我想将内存写入磁盘。

我想用非常大的数据集进行测试 - 我怎样才能做到这一点,以便当 java VM 内存不足时它会将其中的一部分写入磁盘?

【问题讨论】:

  • 对不起,我很困惑,...你在使用数据库吗?
  • 不,我正在测试 van emde boas 树和其他数据结构,一切都在内存中。这还有可能吗?
  • 我认为你不能告诉 JVM 在 RAM 已满时使用文件。您必须编写自己的数据结构来读取/写入文件,可能会缓冲数据。
  • 您还在使用 32 位 Java 吗?我不是 Java 开发人员,但我希望如果您正在运行 64 位进程,您将能够处理更多内存,而且您的操作系统的分页系统还将为您处理磁盘交换......

标签: java memory jvm


【解决方案1】:

也许你可以使用流,或者一些缓冲的。我认为这将是测试这种结构的最佳选择。如果您可以使用流从磁盘读取并且不会生成任何其他对象(仅是必要的对象),那么您可以为您的结构拥有所有 jvm 内存。但也许您可以更详细地描述您的问题?

【讨论】:

    【解决方案2】:

    由于我们在这里讨论临时修复,如果您需要一点额外空间,您可以随时增加页面文件(大多数 Linux 发行版中的交换文件)

    这是来自 Microsoft 的链接: 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 上——一种为您所描述的“大数据”应用程序构建的工具

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-14
      • 2018-07-31
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      相关资源
      最近更新 更多