2015-10-14 16 views
8

Javascript uygulamasında en çok hangi nesnelerin çöp topladığını bilmenin bir yolu var mı?JS: Profil Hangi Nesneleri Oluşturucular Çöp Toplanıyor

Heap Snapshot alabildiğimi ancak en çok hangi nesnelerin en çok toplananları değil, en yaygın olduğunu söylerim.

Ve Öbek Ayırma, Object sınıfı hakkında ayrıntılı bilgi vermez.

+0

yardımcı olur. Örneğin. Nashorn üzerinde çalışıyorsanız, sadece bir JVM profiler kullanabilirsiniz. – the8472

+0

Bunun için bir çözüm buldunuz mu? – Jodes

+1

@Jodes Bkz. Http://stackoverflow.com/questions/39429647/how-to-detect-the-memory-allocations-that-are-triggering-garbage-collection-in-j/ – guest271314

cevap

1

Hangi JavaScript çalışma zamanı motorunu kullanıyorsunuz? Her motorun kendi GC'si ve GC olaylarını izleme yolu vardır. Bir GC uygulaması hakkında daha fazla bilgi edinmeye çalışıyorsanız, Chrome V8 motoru iyi bir başlangıç ​​noktası olacaktır: https://developers.google.com/v8/ Github https://chromium.googlesource.com/v8/v8.git kaynağından kaynak yüklerseniz, src/heap/gc-tracer dosyalarını bulabilirsiniz. [H | cc] Çok fazla yetenek sağlar ve kendi profilleme ihtiyaçlarınız için daha fazlasını ekleyebilirsiniz.

+0

Daniel, bu soruya cevap vermiyor. GC motorunun uygulanması soru değil. İhtiyaç duyulan şey, GC'nin hangi javascript nesnelerini topladığını bulmaktır. – Jodes

+0

Kaynak koduna bakın. Chrome V8 kullanıyorsa, o bilgiyi alabilir. –

+0

Üzgünüz, takip etmiyorum. Javascript hızlandırmak için V8 kodu kullanarak nasıl giderdi? Değiştirerek ve hata ayıklama bilgilerini almak için özel bir C++ javascript yorumlayıcısı oluşturarak? – Jodes

1

Bunu birden çok yığın anlık görüntü alarak ve ardından hangi nesnelerin çöp topladığını belirlemek için anlık görüntüleri karşılaştırarak yapabilirsiniz. this yanıtına bakabilirsiniz. Umarım, büyük ölçüde JS'nizin çalıştığı ortama bağlı olan