Java不安全类允许您为对象分配内存,如下所示,但使用此方法,如何释放完成时分配的内存,因为它没有提供内存地址.
Field f = Unsafe.class.getDeclaredField("theUnsafe"); //Internal reference
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);
//This creates an instance of player class without any initialization
Player p = (Player) unsafe.allocateInstance(Player.class);
是否有从对象引用访问内存地址的方法,也许默认hashCode实现返回的整数可以工作,所以您可以.
unsafe.freeMemory(p.hashCode());
似乎不对--怎么.
发布于 2014-06-26 05:19:50
Unsafe.allocateInstance
分配的空间,因为这个空间属于Java,只有垃圾收集器才能释放它。Unsafe.allocateMemory
/ Unsafe.freeMemory
方法。它们处理表示为long
的原始内存地址。但是,这个内存不是针对Java对象的。https://stackoverflow.com/questions/24429777
复制相似问题