Both the jcmd VM.symboltable -verbose and VM.stringtable -verbose only include the contents from the runtime symbol and string tables:
void SymbolTable::dump(outputStream* st, bool verbose) {
if (!verbose) {
SymbolTable::the_table()->print_table_statistics(st, "SymbolTable");
} else {
Thread* thr = Thread::current();
ResourceMark rm(thr);
st->print_cr("VERSION: 1.1");
DumpSymbol ds(thr, st);
if (!SymbolTable::the_table()->_local_table->try_scan(thr, ds)) {
log_info(symboltable)("dump unavailable at this moment");
}
}
}
void StringTable::dump(outputStream* st, bool verbose) {
if (!verbose) {
the_table()->print_table_statistics(st, "StringTable");
} else {
Thread* thr = Thread::current();
ResourceMark rm(thr);
st->print_cr("VERSION: 1.1");
PrintString ps(thr, st);
if (!the_table()->_local_table->try_scan(thr, ps)) {
st->print_cr("dump unavailable at this moment");
}
}
}
With the default CDS archive always being enabled, both commands need to be updated to include the shared symbols and strings.
void SymbolTable::dump(outputStream* st, bool verbose) {
if (!verbose) {
SymbolTable::the_table()->print_table_statistics(st, "SymbolTable");
} else {
Thread* thr = Thread::current();
ResourceMark rm(thr);
st->print_cr("VERSION: 1.1");
DumpSymbol ds(thr, st);
if (!SymbolTable::the_table()->_local_table->try_scan(thr, ds)) {
log_info(symboltable)("dump unavailable at this moment");
}
}
}
void StringTable::dump(outputStream* st, bool verbose) {
if (!verbose) {
the_table()->print_table_statistics(st, "StringTable");
} else {
Thread* thr = Thread::current();
ResourceMark rm(thr);
st->print_cr("VERSION: 1.1");
PrintString ps(thr, st);
if (!the_table()->_local_table->try_scan(thr, ps)) {
st->print_cr("dump unavailable at this moment");
}
}
}
With the default CDS archive always being enabled, both commands need to be updated to include the shared symbols and strings.