add helper class that returns the size of objects

This commit is contained in:
2017-09-30 17:49:21 +02:00
parent e0655f66fa
commit 7e00594382

View File

@@ -0,0 +1,89 @@
package org.lucares.memory;
import java.util.LinkedHashMap;
import java.util.Map;
import org.lucares.utils.MiniMap;
public class MemoryScale {
public static final String A = "A";
public static void main(String[] args) {
System.out.println("start");
// warmup of classes
getUsedMemory();
Object handle =createObject();
handle = null;
runGc();
long memoryBefore = getUsedMemory();
handle = createObject();
runGc();
long memoryAfter = getUsedMemory();
System.out.println("used memory: " + (memoryAfter - memoryBefore));
}
private static Object createObject(){
String key = "minimap";
switch (key) {
case "minimap":
return createMinimap();
case "string":
return createString();
case "linkedHashMap":
return createLinkedHashMap();
default:
return null;
}
}
private static Object createMinimap() {
final MiniMap<String, String> map = new MiniMap<>();
map.put("A", "A");
for (int i = 0; i < 0; i++){
map.put(""+i, ""+i);
}
return map;
}
private static String createString() {
int i= 0;
return ""+i;
}
private static Object createLinkedHashMap() {
final Map<String, String> map = new LinkedHashMap<>();
map.put("A", "A");
for (int i = 0; i < 0; i++){
map.put(""+i, ""+i);
}
return map;
}
private static void runGc() {
for (int i = 0; i < 10; i++) {
System.gc();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
private static long getUsedMemory() {
return Runtime.getRuntime().totalMemory()
- Runtime.getRuntime().freeMemory();
}
}