【发布时间】:2018-08-16 17:45:57
【问题描述】:
关于 JDK-8191002 中描述的问题,Java Cipher - PBE thread-safety issue 中也有讨论: 我不清楚 finalize() 方法中 Arrays.fill() 的使用是正确的还是错误的。一些答案表明应该使用reachabilityFence,但这是否意味着它是一个错误,或者这是否意味着reachabilityFence 是解决VM 中错误的一种解决方法? 谁能澄清/评论?
从https://docs.oracle.com/javase/specs/jls/se9/html/jls-12.html#jls-12.6复制:“此外,该对象的字段的预终结读取都不会看到在启动该对象的终结之后发生的写入。” 这表明 JDK-8191002 中 NewlyAllocatedArrayFilledByOtherInstanceFinalizer 的代码是正确的,并且失败是由于 JVM 造成的。或不?
【问题讨论】:
标签: java garbage-collection thread-safety finalize