Ich bin auf der Suche nach einem Speicherverlust Problem in unserer Anwendung (Ruby 2.1). Ich verwende beide Techniken: ObjectSpace.dump_all
zum Dumping aller Objekte in JSON-Stream dann eine Offline-Analyse. Die zweite Technik, die ich verwendete, ist Live-Analyse mit ObjectSpace.reachable_objects_from
. In beiden Fällen habe ich festgestellt, dass meine ausgelaufenen Objekte von einem Objekt RubyVM::Env
referenziert werden. Jeder könnte mir erklären was RubyVM::Env
ist. Wie entferne ich diese Referenzen?Ruby leaked Objekte werden von RubyVm :: Env referenziert
6
A
Antwort
1
RubyVM::Env
ist eine interne Ruby-Klasse, die variable Referenzen enthält. Hier ist mein 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
Verwandte Themen
- 1. Dokumentation zu RubyVM :: InstructionSequence?
- 2. Leaked IntentReceiver Ausnahme mit Osmdroid
- 3. Standardkonstruktor der Testvorrichtung kann nicht referenziert werden
- 4. Frozen Objekte in Ruby
- 5. Muting Objekte in Ruby
- 6. Korrekt Ruby on Rails 3 Ersatz für ENV ["RAILS_ENV"] || = 'Produktion'?
- 7. Wie funktioniert der putspecialobject Opcode in RubyVM?
- 8. Vergleicht man Objekte in Ruby
- 9. Viele Build-Warnungen, wenn COM-Objekte ActiveDs oder MSXML2 referenziert werden
- 10. VBA-Namen - Wo werden sie referenziert?
- 11. Ruby Time-Objekte effizient abschneiden
- 12. Fehler: _radians referenziert von
- 13. Python3 venv: Kann env Verzeichnis umbenannt werden?
- 14. Gem nicht gefunden in Ruby Cron-Job in RVM env
- 15. Wie Objekte nach Attributen sortiert werden?
- 16. Wie django Projekt von Ubuntu env in virtuelles env verschieben?
- 17. Ein Entitätsobjekt kann nicht von mehreren Instanzen referenziert werden
- 18. Kann eine .NET-Assembly von ColdFusion aus referenziert werden?
- 19. #/usr/bin/env ruby nicht in cron gefunden
- 20. XML-Elementhierarchie, die referenziert
- 21. Ist der Inhalt von NSData separat referenziert?
- 22. PowerShell - Attribute von Elementen in Arrays, die von .getElementsByTagName() zurückgegeben werden, können nicht referenziert werden
- 23. Framework Fehler: ".objc_class_name_XXX", referenziert von
- 24. Widgets referenziert von Bibliotheksansicht Fehler
- 25. Die Objekte von AlertDialog werden nicht angezeigt.
- 26. Rückkehr Objekte aus Array in Ruby
- 27. Objekte werden in Unity
- 28. Methoden in Ruby: Objekte oder nicht?
- 29. Objekte nach booleschen Werten in Ruby sortieren
- 30. Kann festgestellt werden, ob ein Objekt von einem anderen Objekt referenziert wird?