-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathObjectSizeTest.java
More file actions
84 lines (74 loc) · 2.79 KB
/
Copy pathObjectSizeTest.java
File metadata and controls
84 lines (74 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.inbravo.memory;
import static java.lang.System.out;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import com.inbravo.memory.inst.InstrumentationAgent;
/**
* Add VM arguments before running: -javaagent:inbravo-inst.jar
*
* Taken from: https://dzone.com/articles/estimating-java-object-sizes
*
* @author amit.dixit
*
*/
public final class ObjectSizeTest {
public enum Color {
RED, WHITE, YELLOW
}
/**
* Print basic details including size of provided object to standard output.
*
* @param object Object whose value and size are to be printed to standard output.
*/
public static void printInstrumentationSize(final Object object) {
out.println("Object of type '" + object.getClass() + "' has size of " + InstrumentationAgent.getObjectSize(object) + " bytes.");
}
/**
* Main executable function.
*
* @param arguments Command-line arguments; none expected.
*/
public static final void main(final String... arguments) {
final StringBuilder sb = new StringBuilder(1000);
final boolean falseBoolean = false;
final int zeroInt = 0;
final double zeroDouble = 0.0;
final Long zeroLong = 0L;
final long zeroLongP = 0L;
final Long maxLong = Long.MAX_VALUE;
final Long minLong = Long.MIN_VALUE;
final long maxLongP = Long.MAX_VALUE;
final long minLongP = Long.MIN_VALUE;
final String emptyString = "";
final String string = "ToBeOrNotToBeThatIsTheQuestion";
final String[] strings = {emptyString, string, "Dustin"};
final String[] moreStrings = new String[1000];
final List<String> someStrings = new ArrayList<String>();
final BigDecimal bd = new BigDecimal("999999999999999999.99999999");
final Calendar calendar = Calendar.getInstance();
out.println("=======================================================================================");
printInstrumentationSize(sb);
printInstrumentationSize(falseBoolean);
printInstrumentationSize(zeroInt);
printInstrumentationSize(zeroDouble);
printInstrumentationSize(zeroLong);
printInstrumentationSize(zeroLongP);
printInstrumentationSize(maxLong);
printInstrumentationSize(maxLongP);
printInstrumentationSize(minLong);
printInstrumentationSize(minLongP);
printInstrumentationSize(maxLong);
printInstrumentationSize(maxLongP);
printInstrumentationSize(emptyString);
printInstrumentationSize(string);
printInstrumentationSize(strings);
printInstrumentationSize(moreStrings);
printInstrumentationSize(someStrings);
printInstrumentationSize(bd);
printInstrumentationSize(calendar);
printInstrumentationSize(Color.WHITE);
out.println("=======================================================================================");
}
}