@@ -28,33 +28,38 @@ void mem_status( MemoryStatus & status )
2828{
2929 // These values are in bytes
3030 u_int64_t total_mem;
31- float used_mem;
31+ // float app_mem = 0.0f;
32+ // float cached_file_mem = 0.0f;
33+ float available_mem = 0 .0f ;
3234 float percentage_mem;
3335 float free_mem;
3436 float free_mem_in_gigabytes; // used to check if free mem < 1 GB
3537 // u_int64_t unused_mem;
3638
3739 vm_size_t page_size;
38- vm_statistics_data_t vm_stats;
40+ vm_statistics64_data_t vm_stats; // Use 64-bit VM statistics
3941
4042 // Get total physical memory
4143 int mib[] = { CTL_HW, HW_MEMSIZE };
4244 size_t length = sizeof ( total_mem );
4345 sysctl ( mib, 2 , &total_mem, &length, NULL , 0 );
4446
4547 mach_port_t mach_port = mach_host_self ();
46- mach_msg_type_number_t count = sizeof ( vm_stats ) / sizeof ( natural_t );
48+
49+ // Use HOST_VM_INFO64_COUNT as the count for vm_statistics64_data_t
50+ mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
51+
4752 if ( KERN_SUCCESS == host_page_size ( mach_port, &page_size ) &&
48- KERN_SUCCESS == host_statistics ( mach_port, HOST_VM_INFO ,
53+ KERN_SUCCESS == host_statistics64 ( mach_port, HOST_VM_INFO64 ,
4954 ( host_info_t )&vm_stats, &count )
5055 )
5156 {
5257 // unused_mem = static_cast<u_int64_t>( vm_stats.free_count * page_size );
53-
54- used_mem = static_cast <float >(
55- ( vm_stats.active_count + vm_stats.wire_count ) * page_size);
58+ // app_mem = static_cast<float>(( vm_stats.internal_page_count - vm_stats.purgeable_count ) * page_size );
59+ // cached_file_mem = static_cast<float>(( vm_stats.purgeable_count + vm_stats.external_page_count ) * page_size );
60+ available_mem = static_cast < float >(( vm_stats.free_count + vm_stats.external_page_count - vm_stats. speculative_count ) * page_size );
5661 }
5762
58- status.used_mem = convert_unit (static_cast < float >( used_mem ), MEGABYTES );
63+ status.used_mem = convert_unit (static_cast < float >(total_mem - available_mem ), MEGABYTES );
5964 status.total_mem = convert_unit (static_cast < float >( total_mem ), MEGABYTES );
6065}
0 commit comments