获取对象的内存地址
来源:互联网 发布:陈奕迅热门歌曲知乎 编辑:程序博客网 时间:2024/06/05 15:52
原文:http://www.wang1314.com/doc/topic-957792-1.html
package com.bijian.study;import java.lang.reflect.Field;import sun.misc.Unsafe;public class Addresser {private static Unsafe unsafe;static {try {Field field = Unsafe.class.getDeclaredField("theUnsafe");field.setAccessible(true);unsafe = (Unsafe) field.get(null);} catch (Exception e) {e.printStackTrace();}}public static long addressOf(Object o) throws Exception {Object[] array = new Object[] { o };long baseOffset = unsafe.arrayBaseOffset(Object[].class);int addressSize = unsafe.addressSize();long objectAddress;switch (addressSize) {case 4:objectAddress = unsafe.getInt(array, baseOffset);break;case 8:objectAddress = unsafe.getLong(array, baseOffset);break;default:throw new Error("unsupported address size: " + addressSize);}return (objectAddress);}public static void main(String... args) throws Exception {Object mine = "Hi there".toCharArray();long address = addressOf(mine);System.out.println("Addess: " + address);// Verify address works - should see the characters in the array in the outputprintBytes(address, 27);}public static void printBytes(long objectAddress, int num) {for (long i = 0; i < num; i++) {int cur = unsafe.getByte(objectAddress + i);System.out.print((char) cur);}System.out.println();}}
0 0
- 获取对象的内存地址
- 获取无法用&获取地址的对象的地址
- C#获取内存地址的值
- C# 获取Byte[]类型的内存地址
- C# 获取Byte[]类型的内存地址
- C# 获取Byte[]类型的内存地址
- C# 获取Byte[]类型的内存地址
- 在指定的内存地址创建对象
- 按内存地址区分不同的对象
- Java打印对象的内存地址
- 对象内存地址
- c# 获取对象所占用的内存
- OC将对象赋给对象,及对象用对象初始化的内存地址变化
- MmGetSystemRoutineAddress函数获取内存地址
- 如何获取 程序加载后的内存起始地址
- 从内存地址获取MODULE HANDLE的方法
- 如何获取 程序加载后的内存起始地址
- Java String 对象内存地址
- 程序员面试金典——解题总结: 9.17中等难题 17.5珠玑妙算游戏
- 多线程原理
- 编辑文章 - 博客频道 - CSDN.NET
- 特征工程概述
- 北京天宇联科技有限责任公司—智慧园区
- 获取对象的内存地址
- (scala/java/python)实现分析商店购买记录
- TCP epoll模型
- Java 带参数带返回值方法的使用
- Scala学习笔记之序列解析(Sequence Comprehensions)
- 黑科技
- 认识Zookeeper
- Android 解决SwipeRefreshLayout和listview的setEmptyView的冲突 listview和scrollview的冲突
- 打印机打印