Tag: 不安全

我如何获得sun.misc.Unsafe的实例

我如何获得不安全类的实例? 我总是得到安全例外。 我列出了OpenJdk6实现的代码。 我想把函数sun.misc.Unsafe提供给我,但我总是得到SecurityException不安全。 public static Unsafe getUnsafe() { Class cc = sun.reflect.Reflection.getCallerClass(2); if (cc.getClassLoader() != null) throw new SecurityException(“Unsafe”); return theUnsafe; } 请不要试着告诉我使用这门课是多么不安全。

将对象移离堆

有没有人试图将Java对象移出堆? 我尝试使用不安全的库来使用序列化,反序列化和存储字节数组。 但是复杂的对象中有多个对象,这使得这个过程非常繁琐。 更好的解决方案?

Java Unsafe.copyMemory java.lang.IllegalArgumentException

我有来自Unsafe的copyMemory的问题。 我花了2天时间解决它但没有结果。 下面给出的代码总是以“IllegalArgumentException”结尾。 你能帮助我并展示问题所在吗? public void testMemoryCopy() { class A { public long val = 10; } A a0 = new A(); A a1 = new A(); try { long offset = unsafe.objectFieldOffset(A.class.getField(“val”)); unsafe.copyMemory(a0, offset, a1, offset, 8); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } }

** BUSTED **如何使用sun.misc.Unsafe加快字节查找速度?

我正在尝试使用Unsafe迭代内存而不是遍历byte []中的值。 使用unsafe分配内存块。 内存足以容纳65536个字节值。 我在尝试这个: char aChar = some character if ((byte) 0 == (unsafe.getByte(base_address + aChar) & mask)){ // do something } 代替: char aChar = some character if ((byte) 0 == ( lookup[aChar] & mask )){ // do something } 我认为 Unsafe可以比使用常规数组访问更快地访问内存,并对每个索引执行索引检查… 只是一厢情愿地认为jvm会有一个特殊的操作(不安全),它会以某种方式使常规数组访问和迭代更快。 在我看来,jvm在正常的byte []迭代中运行良好,并且可以使用普通的,纯粹的,纯粹的java代码快速完成它们。 @millimoose击中众所周知的“钉在头上” “不安全可能对许多事情有用,但这种微观优化程度不是其中之一。” – 毫米“ 在非常严格的有限情况下使用Unsafe会更快: (仅64位jvm)对于单个65535字节[]查找更快,每次测试只完成一次 。 在这种情况下,64_bit […]