Java JVM崩溃时异常中显示的奇怪路径

Java JVM崩溃时异常中显示的奇怪路径,java,jvm,java-8,unsafe,Java,Jvm,Java 8,Unsafe,在运行代码之后,例如 public static void main(String... args) throws Exception { getUnsafe().getByte(0); } private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException { Field theUnsafe = Unsafe.class.getDeclaredField("theUnsaf

在运行代码之后,例如

public static void main(String... args) throws Exception {
    getUnsafe().getByte(0);
}

private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {
    Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
    theUnsafe.setAccessible(true);
    return (Unsafe) theUnsafe.get(null);
}    
这会导致JVM崩溃,然后查看记录的输出,在内部异常部分下显示了一些奇怪的路径:

    thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\srÚÞ ©Ö_®?
    thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u60\4407\hotspot\src\share\vm\prims\j
我的本地机器上肯定没有这些路径,一些谷歌搜索显示,它们经常会在这些崩溃转储中结束。我假设它们来自JDK最初编译时

我的问题是——对吗?为什么这些信息会被烘焙到JDK中?只是为了以后调试

对吗

我想是的

为什么这些信息会被烘焙到JDK中?只是为了以后调试

是的,原始路径存储在C/C++的一些编译映像中,用于分析核心转储


避免这些崩溃的一种方法是使用一个库,它包装了不安全的内容,并确保您只访问内存的有效区域。e、 g.对64位内存大小执行此操作,并对二进制和文本数据进行线程安全访问。(免责声明,我帮助编写)

这就是不安全不愉快时发生的情况:)@EvanKnowles如果您对不安全和堆外数据感兴趣,您可能会发现这个库很有趣,因为它内置了编年史队列和编年史映射,并且是广泛使用它的堆外数据存储。