in java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java [396:437]
private static long sizeOfObject(Object o, int depth, long defSize) {
if (o == null) {
return 0;
}
long size;
if (o instanceof Accountable) {
size = ((Accountable) o).ramBytesUsed();
} else if (o instanceof String) {
size = sizeOf((String) o);
} else if (o instanceof boolean[]) {
size = sizeOf((boolean[]) o);
} else if (o instanceof byte[]) {
size = sizeOf((byte[]) o);
} else if (o instanceof char[]) {
size = sizeOf((char[]) o);
} else if (o instanceof double[]) {
size = sizeOf((double[]) o);
} else if (o instanceof float[]) {
size = sizeOf((float[]) o);
} else if (o instanceof int[]) {
size = sizeOf((int[]) o);
} else if (o instanceof Long) {
size = sizeOf((Long) o);
} else if (o instanceof long[]) {
size = sizeOf((long[]) o);
} else if (o instanceof short[]) {
size = sizeOf((short[]) o);
} else if (o instanceof String[]) {
size = sizeOf((String[]) o);
} else if (o instanceof Map) {
size = sizeOfMap((Map) o, ++depth, defSize);
} else if (o instanceof Collection) {
size = sizeOfCollection((Collection) o, ++depth, defSize);
} else {
if (defSize > 0) {
size = defSize;
} else {
size = shallowSizeOf(o);
}
}
return size;
}