# HG changeset patch # User hseigel # Date 1381597758 14400 # Node ID 3e265ce4d2dd95a9189cf1819531de6cfe1e74b9 # Parent 83dbf427fedd002961d49c28f2e247a6fb079f35 8025942: os::Bsd::available_memory() needs implementation Summary: Implement using the host_statistics64() api. Reviewed-by: dsamersoff, morris, dholmes, coleenp, hseigel, dcubed Contributed-by: gerard.ziemski@oracle.com diff -r 83dbf427fedd -r 3e265ce4d2dd src/os/bsd/vm/os_bsd.cpp --- a/src/os/bsd/vm/os_bsd.cpp Fri Oct 11 22:22:19 2013 -0400 +++ b/src/os/bsd/vm/os_bsd.cpp Sat Oct 12 13:09:18 2013 -0400 @@ -159,9 +159,21 @@ return Bsd::available_memory(); } +// available here means free julong os::Bsd::available_memory() { - // XXXBSD: this is just a stopgap implementation - return physical_memory() >> 2; + uint64_t available = physical_memory() >> 2; +#ifdef __APPLE__ + mach_msg_type_number_t count = HOST_VM_INFO64_COUNT; + vm_statistics64_data_t vmstat; + kern_return_t kerr = host_statistics64(mach_host_self(), HOST_VM_INFO64, + (host_info64_t)&vmstat, &count); + assert(kerr == KERN_SUCCESS, + "host_statistics64 failed - check mach_host_self() and count"); + if (kerr == KERN_SUCCESS) { + available = vmstat.free_count * os::vm_page_size(); + } +#endif + return available; } julong os::physical_memory() {