2010-07-09 13 views
0

Est-il possible d'allouer un gros bloc (512 Mo-1 Go avec 4 Go installé) de mémoire réelle sans le laisser basculer? Mon intention finale est de libérer de la mémoire système: os x a un problème quand la mémoire libre est proche de 0 - il ne s'efforce pas de mettre de la mémoire inutilisée à échanger et tout devient très lent en essayant d'avoir de la mémoire. Donc, j'ai décidé que si un processus attrape de la mémoire (je prends 1/8 à 1/4 de la mémoire totale du système) par la force, et que je le libère, le système redeviendra responsable. j'ai écrit petit script Ruby qui a créé et disque de mémoire remplie (hdiutil est la seule façon que je trouve pour saisir la vraie mémoire à l'aide utils externes) et maintenant j'ai décidé de le réécrire en utilisant seulement C.Forcer l'allocation de la mémoire réelle

+0

voir aussi http://stackoverflow.com/questions/14157002/can-calloc-or-malloc-be-use-to-allocate-only-physical-memory-in-osx – Nickolay

Répondre

2

La fonction mlock verrouille les pages en mémoire physique. Je ne suis pas sûr de ce que sont les limites.

Vous devriez être extrêmement sûr de vouloir vraiment faire cela. Ce n'est pas une bonne chose à faire pour le reste du système.

+0

Déjà trouvé lire les pages man :) Mais pour quelqu'un, il sera plus facile de trouver une réponse. Je vais expliquer pourquoi j'ai fait ça en question. – tig

+2

Ah. Voir aussi/usr/bin/purge. Cela ne fait pas la même chose, mais cela libérera généralement beaucoup de mémoire. – Ken

+0

Aïe! la purge est dure, ça marche bien (il libère environ 1Go de mémoire inutilisée), mais ça désagréablement gèle totalement le système pendant 20-30 secondes. Merci pour le partage des connaissances! – tig

Questions connexes