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"

 

java计算对象占用内存大小 SizeOf_jar


 

 

java计算对象占用内存大小 SizeOf_json_02