jjzjj

UNSAFE_componentWillReceiveProps

全部标签

java - Sonar 标志 "Bad practice": Usage of GetResource in XYZ may be unsafe if class is extended

Sonar在我们的Java项目中指示这个错误。欢迎任何有关安全编程的建议!URLurl=getClass().getResource("/myWonderfulResource.txt");if(url==null){thrownewIllegalStateException("Filenotfound:/myWonderfulResource.txt");} 最佳答案 将类设为final,使其无法扩展。警告是为了防止扩展类(可能)尝试使用不存在的资源。 关于java-Sonar标志"B

java - sun.misc.Unsafe 是否在 JDK9 中公开?

我刚刚尝试了JDK9并发现sun.misc.Unsafe现在不包含本地方法,而是将它们委托(delegate)给一些jdk.internal。misc.Unsafe,例如:@ForceInlinepublicintgetInt(Objecto,longoffset){returntheInternalUnsafe.getInt(o,offset);}反过来,最新的看起来实际上像旧的sun.misc.Unsafe,但现在这些方法用一些注释进行了注释:@HotSpotIntrinsicCandidatepublicnativevoidputObject(Objecto,longoffset

java - 为 Unsafe.putOrdered*() 的发布实现获取?

您认为在Java中实现发布/获取对的获取部分的最佳正确方法是什么?我正在尝试使用经典的发布/获取语义(没有StoreLoad并且没有跨线程的顺序一致性)对我的应用程序中的一些操作进行建模。有几种方法可以在JDK中实现大致相当于商店发布的效果。java.util.concurrent.Atomic*.lazySet()和底层sun.misc.Unsafe.putOrdered*()是最常被引用的方法。但是,没有明显的方法来实现加载获取。允许lazySet()的JDKAPI大多在内部使用volatile变量,因此它们的存储发布与易变加载配对。从理论上讲,volatile加载应该比加载获取更

java - 使用 Unsafe.getUnsafe().throwException 抛出异常

我在java.lang.Class#newInstance0中发现了一些有趣的代码://Runconstructortry{returntmpConstructor.newInstance((Object[])null);}catch(InvocationTargetExceptione){Unsafe.getUnsafe().throwException(e.getTargetException());//Notreachedreturnnull;}查看Unsafe.getUnsafe().throwException语句。看起来一个已检查的异常是从一个没有声明要抛出的方法中抛出的!

java - 为什么 JNI 调用本地方法比 sun.misc.Unsafe 中的类似方法慢?

我正在开发一个类似于sun.misc.Unsafe但具有扩展内存管理的JNI实现。为什么来自sun.misc.Unsafe和我开发的库的本地方法的调用时间截然不同?一些数字:sun.misc.Unsafe.getInt(address)需要~1ns当我的类似方法需要~10ns两种实现方式大体相同,都沿用了OpenJDK的源码,只是通过指针返回变量。两者的注册方式相同。如何加速JNI调用?是什么让不安全性能如此特别?谢谢,尤里/ 最佳答案 如果您在Unsafe类中寻找native方法的来源,您会发现它不使用JNI实现。相反,不安全的方

java - 为什么 sun.misc.Unsafe 存在,如何在现实世界中使用它?

前几天我遇到了sun.misc.Unsafe包,并对它的功能感到惊讶。当然,这个类没有记录,但我想知道是否有充分的理由使用它。您可能会在哪些情况下需要使用它?在现实场景中如何使用它?此外,如果您确实需要它,这是否表明您的设计可能有问题?为什么Java甚至包含这个类? 最佳答案 例子虚拟机“内在化”。即CAS(Compare-And-Swap)用于Lock-FreeHashTables例如:sun.misc.Unsafe.compareAndSwapInt它可以对包含CAS特殊指令的native代码进行真正的JNI调用在这里阅读更多关

导致虚拟机故障的 Java 映射/nio/NFS 问题 : "a fault occurred in a recent unsafe memory access operation in compiled Java code"

我已经为特定的二进制格式(nfdump如果有人感兴趣)编写了一个解析器类,它使用了java.nio的MappedByteBuffer。读取每个几GB的文件。二进制格式只是一系列header和大部分固定大小的二进制记录,通过调用nextRecord()将其馈送到被调用方,nextRecord()会推送状态机,完成后返回null。它表现良好。它在开发机器上运行。在我的生产主机上,它可以运行几分钟或几小时,但似乎总是抛出“java.lang.InternalError:afaultoccurredinarecentunsafememoryaccessoperationincompiledJa

java - 我可以用 sun.misc.Unsafe 覆盖对象吗?

如果一个对象是同一类的实例,它们的大小相同,我可以使用sun.misc.Unsafe覆盖另一个对象吗?编辑:“覆盖”是指“删除”第一个对象,用第二个对象填充内存。可能吗? 最佳答案 By"override"Imeanto"delete"firstobject,anttofillthememorywiththesecondone.Isitpossible?是也不是。是-如果您使用Unsafe分配一些内存并写入long,然后在其中写入另一个long(例如),那么是的,您已经删除了第一个对象并用第二个对象填充了内存。这类似于您可以使用By

java - 为什么 XX :MaxDirectMemorySize can't limit Unsafe. 分配内存?

下面的代码将分配大量直接内存但不会导致java.lang.OutOfMemoryError:Directbuffermemory://JVMargs:-Xms10m-Xmx10m-XX:MaxDirectMemorySize=10mpublicclassDirectMemoryOOM{publicstaticvoidmain(String[]args)throwsNoSuchFieldException,IllegalAccessException{Fieldf=Unsafe.class.getDeclaredFields()[0];f.setAccessible(true);Unsa

在componentWillReceiveProps中调用的动作在无限环中进行。

在我的应用中,有一些阶段和游戏与阶段相对应。我在componentdidmount,然后在componentwillreceiveprops中获取舞台触发了无限的时间。有人可以解释为什么吗?componentDidMount(){this.props.fetchCurrentStage();}componentWillReceiveProps(nextState){if(nextState.stageReducer&&nextState.stageReducer.stageId){this.props.fetchGamesForStage(nextState.stageReducer.stag