java计算对象占用内存大小 SizeOf
Quickstart
1. include sizeOf.jar in the classpath of your application and use it in your code like this:
import net.sourceforge.sizeof
...
SizeOf.skipStaticField(true);
//java.sizeOf will not compute static fields
SizeOf.skipFinalField(true);
//java.sizeOf will not compute final fields
SizeOf.skipFlyweightObject(true);
//java.sizeOf will not compute well-known flyweight objects
System.out.println(SizeOf.deepSizeOf(<your object>));
//this will print the object size in bytes
You can dump object's size setting the min size to log
(if you don't specify an output stream standard out is used):
SizeOf.setMinSizeToLog(1024);
//min object size to log in bytes
SizeOf.setLogOutputStream(new FileOutputStream("<your log file>"));
Use the humanReadable() method to get the object size in byte, kilo or mega
(if you need giga your in trouble guy!):
SizeOf.humanReadable(SizeOf.deepSizeOf(<your object>));
2. start your application with the following JVM parameter:
-javaagent:/path_to/sizeOf.jar
3.在项目中引入SizeOf.jar
4.在VM arguments中加入 -javaagent:"F:\workspace\jtest\lib\SizeOf.jar"