2011-11-21 11 views
6

Ho uno script PHP piuttosto grande che sta perdendo memoria. Sono stato in grado di capire quale oggetto sta perdendo, ma non sono stato in grado di scoprire dove si trova la sceneggiatura. Alcune parti del mio script mantengono un riferimento all'oggetto che perde.Debug di perdita di memoria PHP. Tracciamento del conteggio dei riferimenti?

C'è un modo che posso tracciare (e preferibilmente backtrace) dove/quando un oggetto PHP ha il suo conteggio di riferimento aumentato o diminuito?

risposta

2

È possibile utilizzare strumenti di profiling per scoprire che cosa è che perde la memoria preferisco http://xdebug.org/ e http://code.google.com/p/webgrind

http://derickrethans.nl/xdebug-and-tracing-memory-usage.html

+1

Grazie. Sono famoso con XDebug e la funzione di tracciamento. Ma sai come posso usarlo per tenere traccia di dove viene fatto riferimento al mio oggetto che perde tra il mio codice? –

+0

puoi provare a tracciare con webgrind ti mostrerà tutte le funzioni invocate-metodi, non mostrerà l'utilizzo della memoria, ma penso che puoi monitorarle per il tempo speso-utilizzo –

1

tenta di utilizzare:

Inoltre, suggerisco di scrivere il codice in un modo facile da debug e separare le procedure di debug dal codice.

+0

Ho già usato XDdebug per scoprire quale oggetto sta perdendo . Quello che voglio sapere ora è dove sta perdendo? Cioè dove nel mio codice sono riportati riferimenti a quell'oggetto? XDebug può essere usato per quello? –

+0

Come si usano i punti di interruzione per localizzare dove perde l'oggetto? Difficile venire con una soluzione "generale". –

+1

Quindi la mia domanda. Speravo che ci fosse un qualche modo per tracciare o innescare quando il motore Zend incrementa o diminuisce il conteggio dei riferimenti interni di un oggetto. –

Problemi correlati