- 创建MANIFEST.MF(注意:最后一行为空行)
Premain-Class: SizeOfAgent
Can-Redefine-Classes: false
附:可执行jar
Manifest-Version: 1.0
Main-Class: com.smart.cache.PressureTest
建目录sizeof,把SizeOfAgent和SizeOfAgentTest的class放入
回到上级目录,执行命令
jar cvfm size.jar MANIFEST.MF -C sizeof/ .
- 再执行命令
java -javaagent:size.jar -XX:-UseCompressedOops
SizeOfAgent.java
import java.lang.instrument.Instrumentation;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Stack;
/**
* 借助 Instrumentation 接口的 getObjectSize 方法计算对象占用空间
* 原来的 sizeOf 只能计算本对象占用空间, 无法计算继承下来的占用空间,
* 不过可以用反射的方法把全部占用空间计算出来
*
* Created by zhuyb on 16/3/20.
*/
public