【发布时间】:2014-12-28 18:08:09
【问题描述】:
[...] 下面定义的任何
VirtualMachineError子类 [InternalError,OutOfMemoryError,StackOverflowError,UnknownError] 可能在操作期间的任何时间被抛出Java虚拟机
JVMS如何定义短语“在Java虚拟机运行期间的任何时间”?
当前的 JVM 如何解释该短语?
具体来说,是不是意味着java.lang.InternalError、java.lang.OutOfMemoryError、java.lang.StackOverflowError、java.lang.UnknownError这四个错误可能会在between语句中抛出? :
// ....
A(); B(); C();
try {
// nothing
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
D(); E(); F();
try {
; // semi-colon
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
G(); H(); I();
try {
; ; ;; ;;;;; ; ; ;;; ;; ;; ;; ;; ; ;; ; ;; // ... semi-colons
} catch (InternalError | OutOfMemoryError | StackOverflowError | UnknownError e) {
// may occur?
}
J(); K(); L();
// ....
【问题讨论】:
-
these 在我看来有点太相关了,不能在同一 5 分钟内发布。
-
@MaartenBodewes-owlstead,不要被长度所欺骗。 They took hours。但我将它们一起提交,因为它们相互引用。我无法链接到“无”。
-
好吧,那倒是挺公道的,不过下次可能要留点空间,这样很可能会触发各种警报:)
-
Java 虚拟机是复杂的软件。在复杂的软件中,由于软件错误(或硬件故障),随时都可能发生意外情况。例如,查看遍布虚拟机(内存管理器、字节码解释器)的 OpenJDK (hg.openjdk.java.net) 源代码中的
ShouldNotReachHere()调用。谷歌:site:openjdk.java.net ShouldNotReachHere会给你一个提示。你的问题有什么意义?你是想责怪 Java 虚拟机没有给出神奇的保证,还是想解决一些具体的实际问题? -
@xmojmr,面对错误,all bets are off。这个问题是关于 JVM 规范和有效的符合 JVM 对资源限制和诸如此类的反应。