Estamos tratando de averiguar cuánta memoria física está instalada en una máquina que ejecuta Mac OS X. Encontramos la función BSD sysctl(). El problema es que esta función quiere devolver un valor de 32 bits, pero algunos Mac pueden tratar hasta 32 GB, lo que no cabe en un valor de 32 bits. (En realidad, incluso 4 GB no encajarán en un valor de 32 bits). ¿Hay otra API disponible en OS X (10.4 o posterior) que nos dé esta información?Determine el tamaño de la memoria física mediante programación en OSX
Respuesta
¿Intentaron buscar en Google?
Esta parece ser la respuesta: http://lists.apple.com/archives/scitech/2005/Aug/msg00004.html
sysctl() funciona, sólo tiene que ir a buscar hw.memsize en lugar de hw.physmem. hw.memsize le dará un uint64_t, por lo que no hay problema de 32 bits.
La respuesta es usar sysctl para obtener hw.memsize como se sugirió en una respuesta anterior. Aquí está el código real para hacer eso.
#include <sys/types.h>
#include <sys/sysctl.h>
...
int mib[2];
int64_t physical_memory;
size_t length;
// Get the Physical memory size
mib[0] = CTL_HW;
mib[1] = HW_MEMSIZE;
length = sizeof(int64_t);
sysctl(mib, 2, &physical_memory, &length, NULL, 0);
Una corrección menor: sizeof (int64) debería ser sizeof (int64_t) –
Alternativamente, usted puede agregar los datos de vm_statistics_data_t para obtener el total de memoria
vm_statistics_data_t vm_stat;
int count = HOST_VM_INFO_COUNT;
kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (integer_t*)&vm_stat, (mach_msg_type_number_t*)&count);
Aparece una advertencia aquí: "La declaración implícita de la función 'host_statistics' no es válida en C99", ¿cómo soluciono esto? –
#include
Gracias @valexa, pero no funciona, incluso con la adición de Kernel.framework, se mostrará un error en la línea diciendo que no existe. La advertencia no es un error, por lo que tiene algo que ver con el código obsoleto. Tal vez tienes una idea? –
- 1. Determine la velocidad en Internet mediante programación
- 2. Información del proceso mediante programación en Darwin/OSX
- 3. ¿Cómo establecer el tamaño NSView mediante programación?
- 4. Capturas de pantalla de captura mediante programación en OSX
- 5. ¿Cómo se lee el tamaño de la pantalla física de OSX?
- 6. Cambio de tamaño mediante programación de NSSplitView
- 7. Interactuar mediante programación con iOS/iPod adjuntos en OSX 10.6
- 8. Iniciar un programa predeterminado en OSX mediante programación
- 9. La detección de la memoria de fugas mediante programación
- 10. ¿Cómo puedo encontrar el tamaño de la memoria física en Java?
- 11. ¿cómo sabe el sistema operativo el tamaño real de la memoria física?
- 12. mediante programación en C#
- 13. Cómo desencadenar jquery Redimensionar el tamaño mediante programación?
- 14. Cómo detectar el cambio de dirección IP en OSX mediante programación en C o C++
- 15. Borrar la memoria caché de Sitecore para un elemento de la memoria caché mediante programación
- 16. Determine el tamaño de un InputStream
- 17. Limite la memoria física por proceso
- 18. Cómo cambiar el tamaño de la imagen mediante programación en Object-C en iphone
- 19. Configuración de tamaño de cuadro de diálogo mediante programación
- 20. Determine el tamaño actual de la imagen con ImageResizer.net
- 21. Obtener tamaño de la pantalla física en Qt
- 22. Determine si la ubicación de la memoria está en la memoria caché de la CPU
- 23. Mover el mouse mediante programación
- 24. ¿Cómo puedo obtener la memoria física total en C#?
- 25. Encender la pantalla mediante programación
- 26. seleccionar mediante programación archivo en el Explorador
- 27. matriz rectangular física con el fin de memoria
- 28. sincronizar mediante programación el PP en Django
- 29. Mostrar el menú mediante programación en WPF
- 30. memoria física en dispositivos AMD: local vs privado
agradable y fácil para secuencias de comandos! Además, si solo desea memoria: 'sysctl hw.memsize' o' sysctl -a | grep mem' – TrinitronX
Nota: hw.physmem y hw.usermem devolverán valores más pequeños para sistemas de más de [2GB RAM] (http://superuser.com/questions/197059/mac-os-x-sysctl-get-total-and -free-memory-size # comment199969_197085) [muc.lists.FreeBSD.hackers Discussion] (https://groups.google.com/d/msg/muc.lists.freebsd.hackers/P58uQQcRiSo/1lAwPcOfsYIJ) Ver '/usr/include/sys/sysctl.h' comentarios para más información. – TrinitronX