Mi riferisco a un problema di perdita di memoria nella nostra applicazione (Ruby 2.1). Sto utilizzando entrambe le tecniche: ObjectSpace.dump_all
per scaricare tutti gli oggetti nello stream JSON, quindi eseguire un'analisi offline. La seconda tecnica che ho usato è l'analisi dal vivo con ObjectSpace.reachable_objects_from
. In entrambi i modi, ho trovato che i miei oggetti trapelati sono referenziati da un oggetto RubyVM::Env
. Qualcuno potrebbe spiegarmi cos'è RubyVM::Env
. Come rimuovere quei riferimenti?RubyVm :: Env
6
A
risposta
1
RubyVM::Env
è una classe di rubini interni che contiene riferimenti variabili. Ecco il mio test:
require 'objspace'
a = Object.new
a_id = a.object_id # we use #object_id to avoid creating more reference to `a`
ObjectSpace.each_object.select{ |o| ObjectSpace.reachable_objects_from(o).map(&:object_id).include?(a_id) }.count
# => 1
env = ObjectSpace.each_object.select{ |o| ObjectSpace.reachable_objects_from(o).map(&:object_id).include?(a_id) }.first
# => #<RubyVM::Env:0x007ff39ac09a78>
ObjectSpace.reachable_objects_from(env).count
# => 5
a = nil # remove reference
ObjectSpace.reachable_objects_from(env).count
# => 4
Problemi correlati
- 1. subprocess.call env var
- 2. permessi file capistrano-env
- 3. Gulp Env e Preprocess
- 4. cos'è java: comp/env?
- 5. Haskell ReaderT Env IO boilerplate
- 6. Aggiorna $ env: percorso in PowerShell?
- 7. PetaPoco transazione in multithread Env
- 8. Mocha + Nodejs + Heroku .env file
- 9. Perché gli inizializzatori di My Rails memorizzano nella cache le variabili ENV (Foreman, Dev env)
- 10. Come posso rilevare le modifiche su% ENV?
- 11. Cosa fa java: comp/env/do?
- 12. Come usare nodemon con i file .env?
- 13. Mix.env/0 equivalente in produzione env?
- 14. Chi legge il valore di ENV ['SSL_CERT_FILE']?
- 15. dotenv richiede file di .env sulla produzione
- 16. env-> Funzione FindClass restituisce null
- 17. esecuzione java con variabile JAVA_OPTS env
- 18. Heroku locale [WARN] Nessun file ENV trovato
- 19. Perché spec_helper ha questo ENV ["RAILS_ENV"] || = "test"?
- 20. pitone os.environ, os.putenv,/usr/bin/env
- 21. env: bash \ r: nessun file o directory
- 22. AWS ElasticBeanstalk ENV Vars non funziona
- 23. Dockerfile - imposta ENV come risultato del comando
- 24. Come generare file .env per laravel?
- 25. kubernetes equivalente di ENV-file in Docker
- 26. Come commentare nel file .env di laravel?
- 27. Come posso decifrare le variabili env sicure?
- 28. Jenkins: impostazione della variabile env dallo script di shell
- 29. Unchaught TypeError: Impossibile leggere la proprietà 'env' di undefined
- 30. Perché usare/usr/bin/env interrompe l'importazione di Python?