RFR: 8357570: [macOS] os::Bsd::available_memory() might return too low values
Christoph Langer
clanger at openjdk.org
Fri Jun 6 11:00:59 UTC 2025
On Thu, 5 Jun 2025 07:53:48 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:
> Currently os::Bsd::available_memory() returns on macOS
> `vmstat.free_count * os::vm_page_size();`
> But just using free_count is rather conservative because there are other memory categories on macOS that can be made available too. Unfortunately the different memory categories
> There is a bit of additional information here https://developer.apple.com/forums/thread/118867
> that confirms that free memory / free_count is only a fraction of what is available.
>
> There is also some info here
> https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html#//apple_ref/doc/uid/20001880-BCICIHAB
> containing this relevant info :
> "The inactive list contains pages that are currently resident in physical memory but have not been accessed recently. These pages contain valid data but may be removed from memory at any time. The free list contains pages of physical memory that are not associated with any address space of VM object. These pages are available for immediate use by any process that needs them."
>
> and also about purgeable memory at
> https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/CachingandPurgeableMemory.html#//apple_ref/doc/uid/TP40013104-SW1
Looking at the linked documentation this seems to make sense, although I have no means to check plausibility.
Maybe the comment before os::Bsd::available_memory could be modified/weakened a little bit because with the updated gathering it might be of some more use now... 😉
-------------
Marked as reviewed by clanger (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/25657#pullrequestreview-2904580999
More information about the hotspot-runtime-dev
mailing list