J'ai passé 2 heures à lire des questions à ce sujet, et il y a toujours un malentendu.
J'ai ce processus:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND    
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
Cela montre qu'il utilise 19.3Mbde la mémoire résidente du système (je n'ai pas de fichier d'échange), autour 1.8%de la 1GBmémoire système entière . La taille virtuelle est 1.39GB?!?. J'ai lu que ulimit -mça ne marche pas. Les gens utilisent ulimit -vpar exemple la configuration de la mémoire virtuelle pour le processus. Cette mémoire virtuelle est-elle celle avec laquelle VSZ est répertorié ps? Quelle valeur dois-je définir si je souhaite restreindre ce processus pour utiliser 100MBau maximum la mémoire système. J'ai lu la documentation de setrlimitet cela semble légitime:
RLIMIT_AS
        This  is  the maximum size of a process' total available memory, 
        in bytes. If this limit is exceeded, the malloc() and mmap() 
        functions shall fail with errno set to [ENOMEM]. In addition, 
        the automatic stack growth fails with the effects outlined above.
Mais sur d'autres versions de la documentation, ce RLIMIT_ASparamètre définit la taille de la mémoire virtuelle. Quelle est la vérité?