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