ho eseguito Devel::Leak
nel mio programma e non capisco l'uscita mi sta dando.Come si interpretano l'uscita di Devel :: Leak
Per iniziare, vedo che sta stampando una lista di puntatori. Posso ottenere quell'elenco in una matrice? Quindi posso usare FindRef per vedere da dove proviene.
Ad esempio:
new 0xaebc28 : SV = PVGV(0x30e7e48) at 0xaebc28
REFCNT = 1
FLAGS = (GMG,SMG)
IV = 0
NV = 0
PV = 0
MAGIC = 0x2db7dc0
MG_VIRTUAL = &PL_vtbl_glob
MG_TYPE = PERL_MAGIC_glob(*)
MG_OBJ = 0xaebc28
NAME = "SUPER::"
NAMELEN = 7
GvSTASH = 0x76b228 "IO::File"
GP = 0x314b170
SV = 0x30283c8
REFCNT = 1
IO = 0x0
FORM = 0x0
AV = 0x0
HV = 0x301fdb8
CV = 0x0
CVGEN = 0x0
GPFLAGS = 0x0
LINE = 161
FILE = "/mypath/perl_install/perl/lib/5.8.9/x86_64-linux/IO/File.pm"
FLAGS = 0x0
EGV = 0xaebc28 "SUPER::"
o un gruppo di voci più piccoli:
new 0x161c268 : SV = RV(0x3029b40) at 0x161c268
REFCNT = 1
FLAGS = (ROK)
RV = 0x161c218
Cosa devo fare con questo? Ottengo il materiale struct Perl (magic, iv, pv, ..), ma come faccio a passare da queste righe a sapere dove si sta verificando la mia perdita?
http://blog.woobling.org/2009/05/become-hero-plumber.html; vedi anche http://stackoverflow.com/questions/1359771/perl-memory-usage-profiling-and-leak-detection, http://stackoverflow.com/questions/2223721/common-perl-memory-reference-leak -patterns, http://stackoverflow.com/questions/1663498/finding-a-perl-memory-leak, http://stackoverflow.com/questions/295385/are-there-any-tools-for-finding -memory-leaks-in-my-perl-program – Ether
@Ether Grazie per il collegamento. Principalmente sto cercando di identificare quali sono questi oggetti trapelati più del perché non vengono raccolti. – mmccoo