RFR: 8337217: Port VirtualMemoryTracker to use VMATree

Afshin Zafari azafari at openjdk.org
Fri Nov 8 10:52:07 UTC 2024


On Mon, 5 Aug 2024 08:42:43 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:

>> Yeah, that doesn't seem like a problem.
>> 
>> ```c++
>>   for (int i = 0; i < mt_number_of_types; i++) {
>>     r = diff.flag[i].reserve;
>>     c = diff.flag[i].commit;
>>     flag = NMTUtil::index_to_flag(i);
>>     VirtualMemory* mem = VirtualMemorySummary::as_snapshot()->by_type(flag);
>>     reserved = mem->reserved();
>>     committed = mem->committed();
>>     mem->reserve_memory(r);
>>     mem->commit_memory(c);
>>     if ((size_t)-r > reserved) {
>>       print_err("release");
>>     }
>>     if ((size_t)-c > reserved || (size_t)c > committed) {
>>       print_err("uncommit");
>>     }
>>   }
>
> This applies the reserve/commit regardless of outcome, so slightly different.

The main purpose of the `if (...)` cases is to find if the request to apply the delta is valid or not. There are related assertions in VirtualMemory but not so informative. Also, using `log_debug` lets the build proceed and just show the messages.
These messages help a lot when something goes wrong in terms of commit/uncommit/release failure.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20425#discussion_r1704398731


More information about the core-libs-dev mailing list