RFR: 8373114: Redundant MethodCounters in the preimage generated by training run

Vladimir Ivanov vlivanov at openjdk.org
Thu Dec 4 23:04:57 UTC 2025


On Thu, 4 Dec 2025 22:16:03 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:

> Details are mentioned in the bug report and this mail thread https://mail.openjdk.org/pipermail/leyden-dev/2025-December/002843.html
> After this patch the number of MethodCounters in the preimage are much less than before this patch. Also the number of MethodCounters in the preimage is the same as in the final AOTCache (these numbers are obtained using -Xlog:aot=trace).
> 
> Before this patch for the training run:
> 
> [18.610s][debug  ][aot         ]                         ro_cnt   ro_bytes     % |   rw_cnt   rw_bytes     % |  all_cnt  all_bytes     %
> [18.610s][debug  ][aot         ] MethodCounters      :        0          0   0.0 |    22471    1438144   6.2 |    22471    1438144   2.6
> 
> Before this patch for the assembly phase:
> 
> [6.680s][debug][aot         ]                         ro_cnt   ro_bytes     % |   rw_cnt   rw_bytes     % |  all_cnt  all_bytes     %
> [6.680s][debug][aot         ] MethodCounters      :        0          0   0.0 |     8588     549632   2.5 |     8588     549632   1.0
> 
> 
> After this patch for the training run:
> 
> [49.371s][debug  ][aot         ]                         ro_cnt   ro_bytes     % |   rw_cnt   rw_bytes     % |  all_cnt  all_bytes     %
> [49.371s][debug  ][aot         ] MethodTrainingData  :        0          0   0.0 |     4658     521696   2.1 |     4658     521696   0.9
> 
> 
> After this patch for the assembly phase:
> 
> [12.580s][debug][aot         ]                         ro_cnt   ro_bytes     % |   rw_cnt   rw_bytes     % |  all_cnt  all_bytes     %
> [12.580s][debug][aot         ] MethodTrainingData  :        0          0   0.0 |     4658     521696   2.1 |     4658     521696   0.9

I'm not an expert in CDS, but the fix doesn't look right. It breaks Metadata traversal CDS relies on. Instead, if you don't want to keep around `MethodCounter`s not linked to MTDs, break the link from `Method` (`Method::_method_counters`) before dumping pre-image and restore it from archived `TrainingDataSet` during assembly phase.

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

PR Comment: https://git.openjdk.org/jdk/pull/28670#issuecomment-3614669752


More information about the hotspot-dev mailing list