diff --git a/src/main/java/jvm/gc/MemoryAllocationYoung.java b/src/main/java/jvm/gc/MemoryAllocationYoung.java new file mode 100644 index 0000000..201e10e --- /dev/null +++ b/src/main/java/jvm/gc/MemoryAllocationYoung.java @@ -0,0 +1,24 @@ +package jvm.gc; + +/** + * VM Args: -verbose:gc -Xmx20M -Xms20M -Xmn10M -Xlog:gc* -XX:SurvivorRatio=8 + * new objects by default will go to eden first, when eden has no enough space, + * it will trigger minor gc, and move objects from eden to old generation. + */ +public class MemoryAllocationYoung { + private static final int _1MB = 1024 * 1024; + + public static void testAllocation() { + byte[] a,b,c,d; + a = new byte[2 * _1MB]; + b = new byte[2 * _1MB]; + c = new byte[2 * _1MB]; + d = new byte[4 * _1MB]; + + } + + public static void main(String[] args) { + testAllocation(); + } + +} diff --git a/src/main/java/jvm/gc/TenuringThreshold.java b/src/main/java/jvm/gc/TenuringThreshold.java new file mode 100644 index 0000000..8e12650 --- /dev/null +++ b/src/main/java/jvm/gc/TenuringThreshold.java @@ -0,0 +1,24 @@ +package jvm.gc; + +/** + * VM Args: -verbose:gc -Xmx20M -Xms20M -Xmn10M -Xlog:gc+age=trace -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=1 + * -verbose:gc -Xmx20M -Xms20M -Xmn10M -Xlog:gc+age=trace -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 + */ +@SuppressWarnings("unused") +public class TenuringThreshold { + public static final int _1MB = 1024 * 1024; + + public static void testTenuringThreshold() { + byte[] allocation1, allocation2, allocation3; + + allocation1 = new byte[_1MB / 4]; + allocation2 = new byte[4 * _1MB]; + allocation3 = new byte[4 * _1MB]; + allocation3 = null; + allocation3 = new byte[4 * _1MB]; + } + + public static void main(String[] args) { + testTenuringThreshold(); + } +}