相关疑难解决方法(0)

Windows XP上的Java最大内存

我总是能够为在32位Windows XP(Java 1.4,1.5和1.6)上运行的Java SE分配1400兆字节.

java -Xmx1400m ...
Run Code Online (Sandbox Code Playgroud)

今天我在使用Java 1.5_16和1.6.0_07的新Windows XP机器上尝试了相同的选项并得到错误:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)

通过反复试验,我可以在这台机器上分配1200兆字节.

任何想法为什么一台机器将允许1400和另一台只有1200?

编辑:该机器有4GB的RAM,大约3.5GB,Windows可以识别.

java memory windows

102
推荐指数
6
解决办法
14万
查看次数

当JVM在运行时耗尽内存时会发生什么?

在思考了一个通用的方法来提出这个问题(并且没有找到一个)后,我只想问它是一个具体的例子:

假设我有一台具有1 Gb内存的Linux机器,它可以分配给进程(物理和交换总数为1 Gb).

我在计算机上安装了标准的Oracle Hotspot JVM版本7.如果在给定时刻,有足够的程序运行,只有400 Mb的1 Gb是空闲的,并且我在那时使用以下JVM标志启动Java程序:

java -Xms256m -Xmx512m -jar myJar.jar
Run Code Online (Sandbox Code Playgroud)

发生了什么?:

A. JVM是否无法立即启动,因为它会尝试分配所有512 Mb内存并失败(由于目前没有足够的可用内存)?

如果JVM启动:

如果在某些时候正在运行的Java进程需要超过400 Mb的内存(并且除了当前的Java进程已经使用的内存之外,仍然只有400 Mb的内存可用),会发生什么:

B. Java进程是否会因OutOfMemroyError而失败?

C.它会因某些其他(标准)错误而失败吗?

D.是不确定的行为?

java memory garbage-collection jvm memory-management

19
推荐指数
2
解决办法
3万
查看次数