mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-06 14:10:36 +00:00
8267404: vmTestbase/vm/mlvm/anonloader/stress/oome/metaspace/Test.java failed with OutOfMemoryError
Co-authored-by: xiangyuan <xiangyuan@tencent.com> Reviewed-by: stuefe
This commit is contained in:
parent
71e2fa25f7
commit
6288a9936c
@ -154,7 +154,6 @@ vmTestbase/vm/mlvm/meth/stress/jdi/breakpointInCompiledCode/Test.java 8257761 ge
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2none_a/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manyDiff_b/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manySame_b/TestDescription.java 8013267 generic-all
|
||||
vmTestbase/vm/mlvm/anonloader/stress/oome/metaspace/Test.java 8267404 linux-aarch64
|
||||
|
||||
vmTestbase/nsk/jdwp/ThreadReference/ForceEarlyReturn/forceEarlyReturn001/forceEarlyReturn001.java 7199837 generic-all
|
||||
|
||||
|
||||
@ -24,69 +24,38 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @modules java.base/jdk.internal.misc
|
||||
*
|
||||
* @summary converted from VM Testbase vm/mlvm/anonloader/stress/oome/metaspace.
|
||||
* VM Testbase keywords: [feature_mlvm, nonconcurrent]
|
||||
*
|
||||
* @library /vmTestbase
|
||||
* /test/lib
|
||||
* @library /test/lib
|
||||
*
|
||||
* @comment build test class and indify classes
|
||||
* @build vm.mlvm.anonloader.stress.oome.metaspace.Test
|
||||
* @run driver vm.mlvm.share.IndifiedClassesBuilder
|
||||
*
|
||||
* @run main/othervm -Xmx256m -XX:-UseGCOverheadLimit -XX:MaxMetaspaceSize=8m vm.mlvm.anonloader.stress.oome.metaspace.Test
|
||||
* @run driver vm.mlvm.anonloader.stress.oome.metaspace.Test
|
||||
*/
|
||||
|
||||
package vm.mlvm.anonloader.stress.oome.metaspace;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodHandles.Lookup;
|
||||
import java.util.List;
|
||||
import java.io.IOException;
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
|
||||
import vm.mlvm.anonloader.share.AnonkTestee01;
|
||||
import vm.mlvm.share.MlvmOOMTest;
|
||||
import vm.mlvm.share.MlvmTestExecutor;
|
||||
import vm.mlvm.share.Env;
|
||||
import vm.share.FileUtils;
|
||||
public class Test {
|
||||
|
||||
/**
|
||||
* This test loads classes using defineHiddenClass and stores them,
|
||||
* expecting Metaspace OOME.
|
||||
*
|
||||
*/
|
||||
public class Test extends MlvmOOMTest {
|
||||
@Override
|
||||
protected void checkOOME(OutOfMemoryError oome) {
|
||||
String message = oome.getMessage();
|
||||
if (!"Metaspace".equals(message) && !"Compressed class space".equals(message)) {
|
||||
throw new RuntimeException("TEST FAIL : wrong OOME", oome);
|
||||
public static void main(String[] args) throws Exception {
|
||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
|
||||
"-Xshare:off", "-XX:MaxMetaspaceSize=512k", "-version");
|
||||
|
||||
OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
|
||||
|
||||
analyzer.shouldNotHaveExitValue(0);
|
||||
|
||||
if (!analyzer.getStdout().contains("OutOfMemoryError")) {
|
||||
throw new RuntimeException("TEST FAIL : no OOME");
|
||||
}
|
||||
|
||||
if (!analyzer.getStdout().contains("Metaspace") &&
|
||||
!analyzer.getStdout().contains("Compressed class space")) {
|
||||
throw new RuntimeException("TEST FAIL : wrong OOME");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void eatMemory(List<Object> list) {
|
||||
byte[] classBytes = null;
|
||||
try {
|
||||
classBytes = FileUtils.readClass(AnonkTestee01.class.getName());
|
||||
} catch (IOException e) {
|
||||
Env.throwAsUncheckedException(e);
|
||||
}
|
||||
try {
|
||||
while (true) {
|
||||
Lookup lookup = MethodHandles.lookup();
|
||||
Lookup ank_lookup = MethodHandles.privateLookupIn(AnonkTestee01.class, lookup);
|
||||
Class<?> c = ank_lookup.defineHiddenClass(classBytes, true).lookupClass();
|
||||
list.add(c.newInstance());
|
||||
}
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
Env.throwAsUncheckedException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
MlvmTestExecutor.launch(args);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user