Je vais écrire une application qui nécessite beaucoup de mémoire de manière dynamique. La majeure partie de la mémoire est utilisée à des fins de mise en cache et est simplement utilisée pour les accélérations. Ces pièces pourraient effectivement être libérées à la demande.Allocation de mémoire dynamique/Utilisation de la mémoire inutilisée
Malheureusement, mon noyau va tuer le processus s'il manque de mémoire. Mais il pourrait simplement libérer de la mémoire. Donc, ce que je veux est très similaire à la cache de pages Linux comme il est expliqué here. Est-il possible d'implémenter un tel comportement dans l'espace utilisateur de manière pratique?
Je pense à implémenter un tel cache avec des "fichiers de cache" qui sont stockés sur un ramfs/tmpfs avec un IO de fichier mappé en mémoire, mais je suis sûr qu'il y a un moyen plus confortable.
Merci d'avance!
que diriez-vous malloc échoue, vous libérez de la mémoire? Si vous manquez de mémoire tout en allouant un nouveau cadre de pile, il n'y a pas grand-chose que vous puissiez faire ... –
Vous pouvez aller à l'approche des fichiers comme vous l'avez mentionné peut également considérer les fichiers bitmap.Autre, vous pouvez utiliser le pool de mémoire option où vous pouvez allouer de la mémoire une fois et utiliser la mémoire du pool et redonner de la mémoire au pool lorsque cela n'est pas nécessaire. –
@GradyPlayer: Ensuite, je serais obligé de tout moment pour reconnaître le manque de mémoire. En plus de cela, mon processus pourrait encore être tué. – rralf