我正在努力使用
Java堆空间设置. Windows上的默认Java是32位客户端,与操作系统版本无关(这是Oracle向所有用户推荐的).它似乎默认将最大堆大小设置为256 MB,这对我来说太少了.
我使用自定义启动器来启动应用程序.我希望它在具有大量RAM的计算机上使用更多内存,并且在RAM较少的计算机上默认使用-Xmx512m.据我所知,唯一的方法是静态-Xmx设置(必须在启动时设置).
我有一个拥有8 GB RAM,64位Windows和32位Java 7的用户.JVM可见的最大内存是4G(通过查询OperatingSystemMXBean返回).我明白为什么,没问题.
出于某种原因,我的应用程序无法使用-Xmx1300m启动此用户,即使他有2.3G可用内存.他关闭了一些应用程序(拥有5G可用内存),但仍无法启动.报告给我的错误是:
error occured during init of vm
could not reserve enough space for object heap
这是怎么回事?可能是因为32位JVM只能解决“第一”4G内存问题,并且必须在前4 GB内提供1300M块?
除了要求每个人安装64位Java(不太可能接受)之外,我该如何解决这个问题?
编辑:如果它很重要,它是一个胖的Swing客户端,而不是一个小程序.