相关疑难解决方法(0)

JVM是否可以在不重新启动的情况下从OutOfMemoryError中恢复

  1. 如果有更多对象分配请求进入之前有机会运行GC,JVM是否可以在不重启的情况下从OutOfMemoryError中恢复?

  2. 各个JVM实现在这方面有所不同吗?

我的问题是关于JVM恢复而不是用户程序试图通过捕获错误来恢复.换句话说,如果在应用程序服务器(jboss/websphere/..)中抛出OOME,我是否必须重新启动它?或者,如果进一步的请求似乎没有问题,我可以让它运行.

java jvm out-of-memory

43
推荐指数
1
解决办法
2万
查看次数

当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万
查看次数