我正在尝试使用 Weka (http://www.cs.waikato.ac.nz/ml/weka/) 在 64 位 Windows 7 系统上,该系统本质上非常受内存限制。问题是我的电脑有 8GB RAM,而我的任务管理器显示只分配了 1.5。即便如此,当我尝试运行 Weka 时,它应该只使用其中的 3 GB,但它失败了,并出现以下错误:
Error occurred during initialization of VM
Could not reserve enough space for 3072000KB object heap
有想法吗?
答案1
VM 初始化过程中发生错误
无法为 3072000KB 对象堆保留足够的空间
你需要增加最大堆大小JVM。
尝试:
java -Xmx4g ...
笔记:
- 您还需要确保安装了 64 位版本的 JVM。
内存不足异常
大多数 Java 虚拟机仅分配一定的最大内存量来运行 Java 程序。通常,这比计算机中的 RAM 量要少得多。但是,您可以通过设置适当的选项来扩展虚拟机可用的内存。例如,使用 Sun 的 JDK,您可以使用
java -Xmx512m ...
将最大 Java 堆大小设置为 512MB。您可以将
-Xmx2g
其设置为 2GB。有关这些选项的更多信息,请关注关联。
笔记:
不要使用该
-Xms
参数,因为这会很快导致 OutOfMemoryException。如果你在 Windows 下使用 WEKA,并从“开始”菜单启动 WEKA,请查看调用部分Java虚拟机文章中解释了为了给 WEKA 更多的内存你必须编辑哪些文件(RunWEKA.bat 或 RunWEKA.ini,取决于你的版本)。
但请记住,您的硬件架构和/或操作系统将限制您可以分配的内存量(请参阅 Java 虚拟机文章的 32 位和 64 位部分)。
来源内存不足异常
我可以检查 WEKA 有多少可用内存吗?
您可以轻松检查 WEKA 可以使用多少内存(这取决于 Java 虚拟机启动时的最大堆大小)。
- 开发者版本
- 启动 SimpleCLI
- 运行以下命令:
- java weka.core.系统信息
- 属性 memory.max 列出了 WEKA 可用的最大内存量
- 书籍版本(和开发者版本)
- 启动资源管理器
- 在日志面板中单击鼠标右键
- 选择内存信息将信息输出到日志
万一遇到 OutOfMemoryException,则必须增加最大堆大小。您可以分配多少,很大程度上取决于操作系统和底层硬件(请参阅Java虚拟机文章)。另外,请查看内存不足异常部分进一步说明。