On Wed, 14 Oct 2026 13:32:13 GMT, Kevin Walls <[email protected]> wrote:

>> This implements "jcmd on core files" for Linux, and for MiniDumps on Windows 
>> (MacOS is "future work").
>> jcmd "revives" the VM memory and .so/.dll from the core/minidump, and runs 
>> the existing native diagnostic command parser and command implementations.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Kevin Walls has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 55 commits:
> 
>  - Remove static saved statistics for string and symboltable
>  - Update for basic jcmd test
>  - Merge remote-tracking branch 'upstream/master' into 8378084_jep_cores_impl
>  - Minor API update, change a throws and implNote.
>    Clarify source by calling the directory for a cache the revival cache dir 
> (not revival data dir), and "revival_data" is the one struct the VM and tool 
> share.
>    Use PATH_MAX
>    Rename waitHitRet as diagWait - diagnostic wait.  It waits so the process 
> can be inspected at different points before a failure.
>  - Merge remote-tracking branch 'upstream/master' into 8378084_jep_cores_impl
>  - test update
>  - Update test, spacing.
>  - oops
>  - feedback and test update
>  - update
>  - ... and 45 more: https://git.openjdk.org/jdk/compare/059de783...12848f35

Updated to remove the static statistics in stringtable and symboltable 
(src/hotspot/share/classfile/stringTable.cpp and symbolTable.cpp).

This was wanted to avoid problems with the static destructor on Windows, when 
revived.
But it also makes sense, particularly following the same removal in dictionary, 
that 
in the rare case of failure to lock the table, we just fail, don't show old 
statistics.

As well as the jcmds, this affects JFR 
(src/hotspot/share/jfr/periodic/jfrPeriodic.cpp):
SymbolTableStatistics and StringTableStatistics now only create an event when 
statistics can be taken.

I tested that in a build where I made every few calls to 
SymbolTable::get_table_statistics() fail, then ran a recording:

$ jcmd Threads JFR.start settings=none name=TableStatsRecording 
+jdk.StringTableStatistics#enabled=true +jdk.SymbolTableStatistics#enabled=true

Dumped recording: jcmd Threads JFR.dump name=1 filename=my1.jfr
Viewed recording: jfr view all-events my1.jfr 

...and we see fewer symboltable events compared to stringtable stats (expected, 
looks good to me, but maybe I can run it by @egahlin 8-) ).

-------------

PR Comment: https://git.openjdk.org/jdk/pull/31011#issuecomment-6169598892

Reply via email to