我已经有过Java代码捕获NullPointerException的实例,但当我try 记录StackTrace(基本上最终调用Throwable.printStackTrace())时,我得到的只是:

java.lang.NullPointerException

还有谁见过这个吗?我试着在谷歌上搜索"java空指针空栈跟踪",但没有找到任何类似的东西.

推荐答案

您可能正在使用HotSpot JVM(最初由Sun Microsystems收购,后来被OpenJDK的一部分Oracle收购),它执行大量优化.要回溯堆栈跟踪,需要将选项-XX:-OmitStackTraceInFastThrow传递给JVM.

优化是,当第一次发生异常(通常是NullPointerException)时,打印完整的堆栈跟踪,并且JVM记住堆栈跟踪(或者可能只记住代码的位置).当该异常发生得足够频繁时,将不再打印堆栈跟踪,这既是为了获得更好的性能,也是为了不用相同的堆栈跟踪淹没日志(log).

以查看这是如何在热点JVM grab a copy of it中实现的,并搜索全局变量OmitStackTraceInFastThrow.上一次我看代码(2019年)时,它在文件graphKit.cpp中.

Java相关问答推荐

摆脱双列举导致的Json解析错误问题

Jooq隐式地将bigint转换为数字,并且索引不起作用

如何粘合(合并)文件Lucene?

RxJava PublishSubject缓冲区元素超时

JUnit—如何模拟局部变量对象方法调用

无法在org. openjfx:javafx—fxml:21的下列变体之间进行 Select

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

R.id.main给我一个红色错误,无法解析MainActivity.java中的符号main

使用Mockito进行的Junit测试失败

Java LocalTime.parse在本地PC上的Spring Boot中工作,但在Docker容器中不工作

在添加AdMob时无法为Google Play构建应用程序包:JVM垃圾收集器崩溃和JVM内存耗尽

没有使用Lombok生成的参数

Java Telnet客户端重复的IAC符号

A.ForEach与For(类型a:集合)

从泛型枚举创建EnumMap

IntelliJ IDEA中的JavaFX应用程序无法在资源中找到CSS文件

如何在Spring Boot Auth服务器上正确配置CORS?

Java返回生成器的实现

获取401未经授权,即使在标头中设置了浏览器名称和cookie

原始和参数化之间的差异调用orElseGet时可选(供应商)