@@ -59,22 +59,17 @@ public static void makeOldAllocations() {
5959 int deriveIndex = r .nextInt (ArraySize );
6060 switch (i & 0x3 ) {
6161 case 0 :
62- // 50% chance of creating garbage
63- array [replaceIndex ] = array [replaceIndex ].max (array [deriveIndex ]);
64- break ;
65- case 1 :
66- // 50% chance of creating garbage
67- array [replaceIndex ] = array [replaceIndex ].min (array [deriveIndex ]);
68- break ;
69- case 2 :
7062 // creates new old BigInteger, releases old BigInteger,
7163 // may create ephemeral data while computing gcd
7264 array [replaceIndex ] = array [replaceIndex ].gcd (array [deriveIndex ]);
7365 break ;
74- case 3 :
66+ case 1 :
7567 // creates new old BigInteger, releases old BigInteger
7668 array [replaceIndex ] = array [replaceIndex ].multiply (array [deriveIndex ]);
7769 break ;
70+ case 2 ,3 :
71+ // do nothing, let all objects in the array age to increase pressure on old generation
72+ break ;
7873 }
7974 }
8075 }
@@ -106,5 +101,17 @@ public static void main(String[] args) throws Exception {
106101 "-XX:ShenandoahGuaranteedYoungGCInterval=0" ,
107102 "-XX:ShenandoahGuaranteedOldGCInterval=0"
108103 );
104+
105+ testOld ("-Xlog:gc" ,
106+ "-Xms96m" ,
107+ "-Xmx96m" ,
108+ "-XX:+UnlockDiagnosticVMOptions" ,
109+ "-XX:+UnlockExperimentalVMOptions" ,
110+ "-XX:+UseShenandoahGC" ,
111+ "-XX:ShenandoahGCMode=generational" ,
112+ "-XX:ShenandoahGuaranteedYoungGCInterval=0" ,
113+ "-XX:ShenandoahGuaranteedOldGCInterval=0" ,
114+ "-XX:+UseCompactObjectHeaders"
115+ );
109116 }
110117}
0 commit comments