add helper class that returns the size of objects
This commit is contained in:
89
pdb-api/src/test/java/org/lucares/memory/MemoryScale.java
Normal file
89
pdb-api/src/test/java/org/lucares/memory/MemoryScale.java
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user