与主题一样,我使用部署在Java 1.7运行时环境中的Java 1.6编译了Java SE应用程序。由于Java是高度向后兼容的,我认为一切都会很好 - 但是自从它在1.7环境中部署以来,用户正在经历随机的JVM崩溃 - 即整个JVM随机退出。
任何错误日志中都没有任何内容(捕获所有throwable) - 这表明这种情况发生在我的应用程序之外。
预计会出现这种情况吗?
答案 0 :(得分:2)
将Java 6(或更早版本)库与Java 7 JVM一起使用应该可以正常工作。
您检查过致命错误日志吗?
当JVM崩溃时,将使用默认名称java_error
pid .log
编写错误日志。
您可以使用标记-XX:ErrorFile={Path}/{Name of Log file}
java -XX:ErrorFile=myerrorlogfile.log ...
答案 1 :(得分:2)
我认为,首先要关注的是获得异常。 导致异常未被记录的一些原因可能是:
要处理此问题,请使用
执行应用程序-Xdump:java:system:events=vmstop+user
-Xtrace:trigger=method{java/lang/System.exit,javadump}
-Xcheck:jni:verbose
检查编译时和运行时是否与JDK实现相同(如Oracle JDK或OpenJDK)也很有用。从技术上讲,应该没有问题。但在实践中,我遇到了问题。
还尝试使用
增加堆大小-Xms512m -Xmx1152m -XX:MaxPermSize=256m -XX:MaxNewSize=256m