Memory IBM JRE 1.5将不会使用请求的1.5G内存启动

Memory IBM JRE 1.5将不会使用请求的1.5G内存启动,memory,heap,java,Memory,Heap,Java,Windows上的IBM JRE 5.0,当在内存为2GB的笔记本电脑上提供Xmx1536m时,拒绝启动:错误消息如下。对于-Xmx1000m,它确实可以启动 此外,它在其他服务器甚至笔记本电脑上使用-Xmx1536m就可以了,所以我认为不仅仅是内存不足 此外,当使用相同的内存参数从Eclipse内部启动时(尽管在本例中使用IBM5JDK中的JRE),它运行良好 知道这是怎么回事吗 JVM9VM015W库j9gc23的初始化错误(2):无法实例化堆。请求15.36亿美元 无法创建Java虚拟机

Windows上的IBM JRE 5.0,当在内存为2GB的笔记本电脑上提供Xmx1536m时,拒绝启动:错误消息如下。对于-Xmx1000m,它确实可以启动

此外,它在其他服务器甚至笔记本电脑上使用-Xmx1536m就可以了,所以我认为不仅仅是内存不足

此外,当使用相同的内存参数从Eclipse内部启动时(尽管在本例中使用IBM5JDK中的JRE),它运行良好

知道这是怎么回事吗

JVM9VM015W库j9gc23的初始化错误(2):无法实例化堆。请求15.36亿美元 无法创建Java虚拟机


编辑:


是否有人知道以及它是否与此相关(除了明显的事实,即这大约是一个内存限制问题之外)。如何判断它是否已启用,以及打开它的最直接方式是什么?

JVM要求它能够将其内存分配为单个连续块。如果您使用的是32位系统,则可用的最大值约为1280M左右。要获得更多,必须在64位操作系统上运行64位JVM

通过在重启后立即启动JVM,您可能可以获得更多


至于在其他系统上启动正常,是32位还是64位?

根据IBM DeveloperWorks:

原因
系统没有必要的资源来满足 所需的最大默认堆值 运行JVM

要解决这个问题,这里是它所说的

解决问题
如果您收到 启动时会显示此错误消息 JVM,免费 通过停止其他应用程序来存储内存 这可能是消费系统 资源

JVM没有足够的内存资源来创建1536 MB的最大堆空间。只要确保你有足够的内存来容纳它


另外,我相信在Windows中,最大堆空间是1000MB?我不确定这是否可靠,但在Linux/AIX中,任何超过1GB的Xmx都可以正常工作。

在Windows平台上,您保证获得的最大容量是1450MB。有时,Windows/Java.exe会将DLL映射到1.5-2.0GB范围内的地址。即使您使用/3GB技巧(或者您有一个支持它的操作系统),这一点也不会改变。您必须手动重新设置DLL的基址,使其更高,接近2GB(或3GB边界)。这真是一件让人头疼的事,我以前也这么做过,但我在使用和不使用/3GB组合的情况下所能获得的最好成绩是32位Windows上的1.8G


最好使用它并迁移到64位操作系统。他们现在每天都很流行

部分来源:与停止其他应用程序无关。不幸的是,Windows32中确实存在一个很低的限制。不过,我想知道为什么这里会出现问题。“3GB开关”是否相关?通过停止其他应用程序,我的意思是停止在JVM上运行的任何应用程序。堆空间是共享空间。我想你应该看看Chris Kaminski说的话,因为它似乎与你的3GB交换机有关。1280M似乎是这里的极限。它适用于其他32位系统(包括从Eclipse运行的同一台笔记本电脑)。根据内存中的内容,在1536M左右有一个硬限制,这与Windows设置地址空间的方式以及DLL在内存中的加载位置有关。在不同的系统上可能会有所不同。1280M是一个对我有用的经验数字。要可靠地获得远远超过1280的数据,您需要升级到64位系统和JVM。还要记住,在Helios(下一个版本)之前,Eclipse在64位兼容的版本中是不可用的。你怎么知道Eclipse获得了1536M?“32位Windows上的1.8G”是的,这些其他机器获得了1536M,当然不是1.8G。我想知道为什么我的机器不能获得1536M。在JVM上运行processExplorer。它可能会在1.5GB边界附近的某个地方显示一个DLL,该DLL阻止您获取单个连续的1.5GB内存块。然后可以在堆中更高的位置重新设置DLL的基础。