J'aimerais connaître la quantité de mémoire utilisée par une table Lua - sans parcourir le contenu de la table et en comptabiliser l'utilisation. Y at-il une fonction Lua 5.1 ou une bibliothèque tierce qui pourrait aider à cela.Existe-t-il un moyen (simple) d'obtenir l'utilisation de la mémoire d'une table Lua?
Répondre
Vous pouvez surveiller l'utilisation de la mémoire de Lua en appelant collectgarbage("count")
ou gcinfo(
aux emplacements appropriés dans tout le code (par exemple, avant et après les opérations d'insertion). Il n'y a pas de manière triviale d'obtenir la taille d'une table.
Il n'y a pas de fonction pour cette tâche. Pourquoi veux-tu faire cela? Qu'essayez-vous d'accomplir?
Je travaille avec une application Lua qui consomme beaucoup de mémoire - et manger en fin de compte la RAM disponible. Franchement, c'est un défaut de conception et je peux voir dans les zones à problèmes dans le code source. Une réécriture/repenser est nécessaire mais je ne peux pas commencer sur cela pendant un mois. Dans l'intervalle, je suis à la recherche d'une solution rapide pour redémarrer un client. J'ai pensé qu'une ventilation plus détaillée de l'utilisation de la mémoire m'aiderait à décider quelle (s) partie (s) changer/contourner maintenant. – user295625
Avez-vous essayé de peaufiner la récupération de place ou d'utiliser le correctif d'urgence? http://lua-users.org/wiki/EmergencyGarbageCollector C'est assez stable, et aussi plutôt utile pour des situations encore plus intégrées (SRAM 64k sur un microcontrôleur :-) Les versions préliminaires de Lua 5.2 ont aussi un EGC, qui n'est pas le patch ci-dessus, mais devrait fournir des fonctionnalités similaires. Utilisez-vous réellement toute la mémoire disponible avec des objets encore utilisés? Comme vous pouvez le constater sur les liens de la liste Lua dans l'une des autres réponses, Lua vous permet de définir ce que vous voulez comme allocateur de mémoire. –
Ne ressemblerait-il pas à this ou this?
2016 Mise à jour: Voir aussi: http://www.lua.org/wshop15/Musa2.pdf
2ème lien est mort :( –
Correction, merci pour un heads-up! –
Deuxième lien est mort à nouveau, sadface – Tosfera
S'il vous plaît ne jamais écrire Lua en majuscules. Ce n'est pas un acronyme. http://www.lua.org/about.html#name –
Je vais essayer, ça peut me donner assez d'informations pour prendre des décisions. Sinon, je me pencherai sur les suggestions d'Alexander et de James. Merci! – user295625