SORU
23 EYLÜL 2008, Salı


'GC kullanma hakkında bu kadar yanlış olan ne.() Toplamak?

Gerçi anlıyorum da ciddi sonuçları oyun ile bu fonksiyon (ya da en azından öyle düşünüyorum), ben başarısız neden haline geliyor bu işlerden biri bu saygıdeğer programcılar olmaz şimdiye kadar kullanan, hatta o kim bile bilmiyorum ne olduğunu.

Hadi bellek kullanımı, kullanıcı ne yaptığını son derece bağlı olarak değişir bir uygulama geliştiriyorum diyelim. Uygulama yaşam döngüsü iki ana aşamaya ayrılabilir: kurgu ve gerçek-zamanlı işleme. Düzenleme sırasında sahne, sanırım bu milyarlarca hatta trilyonlarca nesne oluşturulur; bazıları küçük ve bazıları değil, bazı olabilir sonlandırıcı ve bazı olmayabilir, ve sanırım hayatları değişir bir çok birkaç milisaniye için uzun saatler. Ardından, kullanıcının gerçek zamanlı aşamasına geçmek için karar verir. Bu noktada, performans temel bir rol oynar ve programın akışında en ufak bir değişiklik yıkıcı sonuçlar getirebilir varsayalım. Nesne oluşturma nesne havuzları ve böyle ama sonra, GC beklenmedik çanları ve her şeyi bir kenara atar, biri ölüyor kullanarak mümkün olan minimum azalır.

Soru: bu durumda, GC aramak daha akıllıca olmaz.() Toplamak ikinci aşamaya girmeden önce?

Sonuçta, bu iki aşamalı bir daha asla birbirimizi optimizasyonu ile zaman içinde üst üste ve GC toplanmış olabilir küçük istatistikleri burada faydam olur...

Bazılarınızın da belirttiği Gibi, .not: NET böyle bir uygulama için iyi bir platform olmayabilir, ama bu sorunun kapsamı dışındadır. Niyet bir GC olup olmadığını açıklığa kavuşturmak için.() Ödemeli arama bir uygulamanın genel davranış/performans artırabilir ya da değil. Hepimiz kabul ediyoruz ki bu şartlar altında hangi yapardınız böyle bir şey çok nadir ama sonra tekrar, GC tahmin etmeye çalışır ve bunu çok iyi çoğu zaman, ama hala hakkında tahmin.

Teşekkürler.

CEVAP
23 EYLÜL 2008, Salı


From Rico's Blog...

Kural #1

Yok.

Bu gerçekten çok önemli. kural. Adil en demek GC kullanımları.() Toplamak kötü bir fikir ve bazı ayrıntıları girdim bu özgün tekrarlamak istemiyorum bu yüzden endişe hepsi burada. Yani Hadi gidelim...

Kural #2

GC arayasım geliyor.() Toplamak eğer bazı olmayan yinelenen olay az önce gerçekleşti ve bu olay çok yüksek bir ihtimal. eski nesneleri bir sürü neden var ölmek.

Bu klasik bir örnek, eğer varsa. istemci bir uygulama yazma ve bir çok büyük ve karmaşık bir görüntü çok fazla veri içeren form ilişkili bununla. Kullanıcı sadece bu form ile potansiyel etkileşim bazı büyük nesneler oluşturma... şeyler XML belgeleri gibi, ya da büyük bir veri Kümesi ya da iki. Bu form kapandığında nesneleri ölü ve GC.()Toplamak bellek ilişkili boşalır onlara... ..

Bu durum altında Kural #2, eski nesneleri bir sürü ölen bir zamanı var biliyorsun, ve tekrarlamayan bu düşebilir gibi geliyor. Ancak, Rico ayrılık sözleri unutma.

Kural #1 olmalıdır trump Kural #2 olmadan güçlü bir kanıt.

Tedbir, tedbir, tedbir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Philip DeFranco

    Philip DeFra

    16 EYLÜL 2006
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009