Nous essayons de connaître la quantité de mémoire physique installée sur une machine exécutant Mac OS X. Nous avons trouvé la fonction BSD sysctl(). Le problème est que cette fonction veut renvoyer une valeur de 32 bits mais certains Mac peuvent adresser jusqu'à 32 Go qui ne rentreront pas dans une valeur de 32 bits. (En fait, même 4 Go ne rentrent pas dans une valeur de 32 bits.) Y a-t-il une autre API disponible sur OS X (10.4 ou ultérieur) qui nous donnera cette information?Déterminez la taille de la mémoire physique par programme sous OSX
Répondre
Avez-vous essayé le googling?
Cela semble être la réponse: http://lists.apple.com/archives/scitech/2005/Aug/msg00004.html
sysctl() fonctionne, il vous suffit de chercher hw.memsize au lieu de hw.physmem. hw.memsize vous donnera un uint64_t, donc pas de problème de 32 bits.
La réponse est d'utiliser sysctl pour obtenir hw.memsize comme cela a été suggéré dans une réponse précédente. Voici le code réel pour le faire.
#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);
Une correction mineure: sizeof (int64) devrait être sizeof (int64_t) –
Sinon, vous pouvez ajouter les données de vm_statistics_data_t pour obtenir la mémoire totale
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);
Je reçois un avertissement ici: "Déclaration implicite de la fonction 'host_statistics' invalide en C99", comment puis-je résoudre ce problème? –
#include
Merci @valexa, mais ça ne marche pas, même avec l'ajout du Kernel.framework, il va afficher une erreur sur la ligne disant qu'elle n'existe pas. L'avertissement n'est pas une erreur, il a donc quelque chose à voir avec du code obsolète. Peut-être avez-vous une idée? –
- 1. Déterminez la quantité de mémoire utilisée par une classe?
- 2. SharePoint, comment déterminez-vous par programme la taille de stockage d'un SPWeb?
- 3. Déterminez la taille de la base de données SQL Server
- 4. Bloquer par programme l'économiseur d'écran sous Mac OSX
- 5. Déterminer la taille des Espaces de travail Groove par programme?
- 6. Récupérer par programme l'utilisation de la mémoire sur l'iPhone
- 7. Taille de segment de mémoire initiale allouée à un programme C++ sous UNIX
- 8. AS3: Optimisation de la taille de la mémoire de l'objet
- 9. Comment générer par programme un PDF à partir de n'importe quel document sous OSX?
- 10. Éviter la mémoire initiale Heap Taille Erreur
- 11. Comment trouver la taille de la mémoire virtuelle et la taille du cache d'un système Linux?
- 12. Détermination par programme de la taille de la police pour l'affichage sur une seule ligne
- 13. Comment obtenir l'utilisation de la mémoire sous Windows en C++
- 14. Comment régler le volume du système par programme (sous OSX et Windows)
- 15. Quelle est la taille limite d'un argument de sous-programme PL/SQL varchar2 dans Oracle?
- 16. Modifier la résolution de l'écran par programme?
- 17. Fuite de mémoire ARM/Linux: un programme utilisateur peut-il conserver la mémoire après la fin?
- 18. détermination de la taille des vecteurs de bits pour la gestion de la mémoire limite donnée dure mémoire
- 19. Quelle est la taille de segment de mémoire par défaut pour le J9VM d'IBM?
- 20. Définir par programme l'icône de dossier/répertoire personnalisée sous Linux
- 21. Valeurs par défaut de la mémoire JVM
- 22. traite la mémoire d'utilisation sous Linux
- 23. Calculer par programme la mémoire occupée par un objet Java y compris les objets qu'il référence
- 24. Un moyen d'allouer de la mémoire physique au-dessus de 4 Go sur Vista x64?
- 25. Vérifiez l'utilisation de la mémoire de texture sur l'iPhone par programme
- 26. Déterminer la taille de la page par HttpModule
- 27. Bibliothèques X11 sous OSX 10.5?
- 28. Exécuter l'application par programme sous Vista
- 29. Édition par programme de la source Python
- 30. Déplacement de la souris par programme
Nice & facile pour les scripts! Aussi, si vous voulez seulement de la mémoire: 'sysctl hw.memsize' ou' sysctl -a | grep mem' – TrinitronX
Note: hw.physmem et hw.usermem retourneront des valeurs plus petites pour les systèmes de plus de [2GB RAM] (http://superuser.com/questions/197059/mac-os-x-sysctl-get-total-and -free-memory-size # comment199969_197085) [discussion muc.lists.FreeBSD.hackers] (https://groups.google.com/d/msg/muc.lists.freebsd.hackers/P58uQQcRiSo/1lAwPcOfsYIJ) Voir '/usr/include/sys/sysctl.h' commentaires pour plus d'informations. – TrinitronX