8214217: [TESTBUG] runtime/appcds/LotsOfClasses.java failed with fragmented heap

Improve the fragmentation error message. Set java heap size in LotsOfClasses.java.

Reviewed-by: iklam, ccheung
This commit is contained in:
Jiangli Zhou 2018-11-27 17:53:17 -05:00
parent 803b9a675b
commit bc215804a4
2 changed files with 12 additions and 2 deletions
src/hotspot/share/memory
test/hotspot/jtreg/runtime/appcds

@ -683,7 +683,10 @@ size_t FileMapInfo::write_archive_heap_regions(GrowableArray<MemRegion> *heap_me
int arr_len = heap_mem == NULL ? 0 : heap_mem->length();
if(arr_len > max_num_regions) {
fail_stop("Unable to write archive heap memory regions: "
"number of memory regions exceeds maximum due to fragmentation");
"number of memory regions exceeds maximum due to fragmentation."
"Please increase java heap size "
"(current MaxHeapSize is " SIZE_FORMAT ", InitialHeapSize is " SIZE_FORMAT ").",
MaxHeapSize, InitialHeapSize);
}
size_t total_size = 0;

@ -57,9 +57,16 @@ public class LotsOfClasses {
opts.addSuffix("--add-modules");
opts.addSuffix("ALL-SYSTEM");
opts.addSuffix("-Xlog:hashtables");
opts.addSuffix("-Xms500m");
opts.addSuffix("-Xmx500m");
OutputAnalyzer out = CDSTestUtils.createArchive(opts);
CDSTestUtils.checkDump(out);
try {
CDSTestUtils.checkDump(out);
} catch (java.lang.RuntimeException re) {
out.shouldContain(
"number of memory regions exceeds maximum due to fragmentation");
}
}
static void findAllClasses(ArrayList<String> list) throws Throwable {