是否有
Java语言或JVM中的任何软件预取指令,如GCC中提供的
__builtin_prefetch
解决方法
一个有趣的事情是,Hotspot JVM实际上支持预取!
它将Unsafe.prefetchRead()和Unsafe.prefetchWrite()方法视为内在函数,并将其编译为相应的cpu指令.
它将Unsafe.prefetchRead()和Unsafe.prefetchWrite()方法视为内在函数,并将其编译为相应的cpu指令.
不幸的是,sun.misc.Unsafe不声明这种方法.但是,如果您将以下方法添加到Unsafe.java中,请重新编译并替换rt.jar中的Unsafe.class(或仅添加-Xbootclasspath / p JVM参数),您将能够在应用程序中使用prefetch内在函数.
public native void prefetchRead(Object o,long offset); public native void prefetchWrite(Object o,long offset); public static native void prefetchReadStatic(Object o,long offset); public static native void prefetchWriteStatic(Object o,long offset);
我怀疑这可能有助于实际应用,但如果你想玩它,我可以提供更多的细节.
这是JDK 8的一个编译补丁,可以实现预取方式:download
用法示例:
long[] array = new long[100*1024*1024]; // ... sun.misc.Unsafe.prefetchReadStatic(array,50*1024*1024);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。