Java 32位—can';分配的内存不能超过-Xmx512m?8 GB,64位Windows 7

Java 32位—can';分配的内存不能超过-Xmx512m?8 GB,64位Windows 7,java,memory-management,pentaho,Java,Memory Management,Pentaho,我正在使用ETL程序Pentaho进行数据集成。我遇到了内存问题,但每次我将“-Xmx512m”设置为更高的值(1024+)时都会出现致命错误 我的计算机上有32位的Java——安装64位的Java可能会解决这个问题吗?(我需要它来安装程序)。我认为32位的最大GB至少是1G 再说一次,我的电脑有8GB的物理内存。。。我现在没有太多的空位,有什么问题吗?如何解决此问题?任何32位的限制都是最大3GB,但这是运行本机的代码的限制。Java在虚拟机中运行。所有Java可以使用的最大容量为~3GB,但

我正在使用ETL程序Pentaho进行数据集成。我遇到了内存问题,但每次我将“-Xmx512m”设置为更高的值(1024+)时都会出现致命错误

我的计算机上有32位的Java——安装64位的Java可能会解决这个问题吗?(我需要它来安装程序)。我认为32位的最大GB至少是1G


再说一次,我的电脑有8GB的物理内存。。。我现在没有太多的空位,有什么问题吗?如何解决此问题?

任何32位的限制都是最大3GB,但这是运行本机的代码的限制。Java在虚拟机中运行。所有Java可以使用的最大容量为~3GB,但除了代码运行之外,还有其他部分可以让Java保持正常运行,更不用说机器上的其他32位代码了


此外,您可以调用的特定对象可能会被限制为一个不超过2^10(1024)MB条目的注册表


因此,切换到64位可能会有助于解决您的问题,但不能保证在您的系统本机上运行的某些东西可能会占用较小的内存空间来处理您正在运行的代码。

那么致命错误是什么?你为什么要在64位机器上使用32位JVM呢?它没有说。嗯,我猜是“无法创建Java虚拟机”。我的直觉是,特别是对于Windows,32位Java有一些硬编码限制,在我的例子中,它(不知何故)甚至不到1300m。我使用32位的原因是什么?嗯,我最初不是在这里安装的。。。所以我不确定。也许是出于安全考虑,或者。。。谁知道呢。由于安全程序的原因,我不能直接运行.exe文件——你可以想象,这非常重要。我确信我过去在32位JVM上使用的内存远远超过512MB——但如果你能在机器上安装一个64位JVM就更好了。“此外,您可以调用的特定对象可以限制为不超过2^10(1024)MB条目的注册表。“你这是什么意思?究竟是什么限制了Pentaho应用程序中的ETL作业?而且,这个办公室的大多数计算机甚至没有安装Java,所以我怀疑还有很多其他的后台工作(除了让VM像你说的那样运行)Java作为一个平台使用内存和其他资源来运行,代码不是直接在CPU上执行的,而是通过运行代码抽象出来的,而不是在机器上组装(这就是它跨平台工作的方式)。我不确定在Pantaho内部调用哪些方法可能会受到限制。某些数据类型的数组或列表有大小限制。我仍然感到困惑。在论坛上,Pentaho专家经常建议升级“xmx”参数设置为1 gig或2 gig。因此应用程序似乎可以完全支持它。我也刚刚升级到64位java。到目前为止,我收到了相同的错误,但我不确定是否需要在某个地方手动更改“哪个java”。我的计算机的物理内存限制是8 GB吗?这里的限制到底是什么?我无法扩展计算机的物理内存,如果你认为这是问题的话。让我强调一下——我必须改变JAVA_HOME环境变量……现在它似乎与JAVA 64位一起工作……这需要一些时间才能弄清楚。