«garbage-collection» etiketlenmiş sorular

2
Çöp toplama saf dillerde ne kadar farklıdır?
Haskell gibi saf bir dilde, tüm veriler değişmezdir ve mevcut hiçbir veri yapısı hiçbir şekilde değiştirilemez. Ek olarak, değişken veri ve fonksiyonel programlama kalıpları üzerine birçok algoritma, doğadan büyük miktarda çöp üretir ( mapörneğin, ara listeler oluşturma zincirleri ). Çöp toplayıcılar saflık karşısında başka türlü kullanamayacakları stratejileri ve teknikleri kullanıyor? …

6
LMAX'taki ekip neden Java kullanıyor ve GC'yi ne pahasına olursa olsun mimariyi tasarladı?
Neden LMAX’taki ekip Java’daki LMAX Yıkıcı’yı tasarladı ama bütün tasarımları GC kullanımını minimuma indirdi ? Eğer biri GC çalıştırmak istemiyorsa, neden bir çöp toplanmış dil kullanıyorsunuz? Optimizasyonları, donanım bilgisi seviyesi ve ortaya koydukları düşünce sadece harika ama neden Java? Java ya da herhangi bir şeye karşı değilim ama neden bir …

9
Bellek yönetilmeyen programlamanın karmaşıklıkları nelerdir?
Başka bir deyişle, otomatik çöp toplama işlemi hangi belirli sorunları çözdü? Hiçbir zaman düşük seviyeli programlama yapmadım, bu yüzden kaynakları serbest bırakmanın ne kadar karmaşık olabileceğini bilmiyorum. GC'nin ele aldığı hatalar (en azından bir dış gözlemciye), bir programcının dilini, kitaplıklarını, kavramlarını, deyimlerini vb. İyi tanıyan şeyler yapmaz. Ancak yanılıyor olabilirim: …

7
Çöp toplama işleminin manuel bellek yönetiminden daha hızlı olduğunun gösterilmesi
Birçok yerde (heck, hatta kendim yazdım bile) çöp toplama işleminin (teorik olarak) manuel bellek yönetiminden daha hızlı olabileceğini okudum . Bununla birlikte, göstermek, söylemekten çok daha zor. Aslında bu etkiyi gösteren bir kod parçası görmedim . Bu performans avantajını gösteren herhangi biri (veya nerede bulabileceğimi biliyor) koduna sahip mi?

1
Bir çöp toplayıcı öbekteki nesneleri sıkıştırdığında, yığındaki referansları değiştirir mi?
Bu basit bir soru gibi görünüyor, ancak konuyla ilgili çok fazla okumadan sonra, hala kesin bir cevap bulamadım (belki de çok basit olduğu için). Benim sorum şudur: Çöp toplayıcı öbekteki nesneleri sıkıştırdığında, yığında bu nesnelere yapılan başvurular nasıl güncellenir? İki olası çözümü düşünebilirim: Yığını (ve yığındaki referansları) gözden geçirin ve …

6
Bir çöp toplayıcı, her toplamada belleğin taranmasını nasıl önler?
Bazı (en azından Mono ve .NET'ler) çöp toplayıcıların, sık sık taradıkları kısa süreli bir bellek alanı ve daha az sıklıkta taradıkları ikincil bir hafıza alanı vardır. Mono buna kreş diyor. Hangi nesnelerin atılabileceğini bulmak için, köklerden, yığından ve kayıtlardan başlayarak tüm nesneleri tarar ve artık referans alınmayan tüm nesneleri atarlar. …


3
Çöp toplamada bir karma tablo kullanmak, dünyadaki markalama ve süpürme sorununu durdurur mu?
Mark-sweep-compact çöp toplama algoritmasında nesneleri değiştirirken dünyayı durdurmanız gerekir çünkü referans grafiği tutarsız hale gelir ve nesneyi işaret eden tüm referansların değerlerini değiştirmeniz gerekir. Ancak, anahtar olarak nesne kimliği ve değer olarak işaretçi içeren bir karma tablonuz olsaydı ve referanslar, nesne adresi yerine adı geçen kimliğe işaret ederse ... referansların …

2
Çöp Toplama deterministik olmadığından, neden güvenli rasgele sayı üretimi için kullanılmıyor?
Bu / dev / randomın iyi bir entropi kaynağı olduğunu ve genellikle kullanılan şey olduğunu görüyorum - Tıpkı GC'de okuduğum gibi, en azından Java'da, çöp toplama arka plan programının determinist olarak yürütülmediği kabul ediliyor. . Bu doğruysa, neden çöp toplama zamanlamasını / dev / random değişkeni yerine entropi kaynağı olarak …

4
Düşük duraklamalı GC'nin arkasındaki algoritmalar nelerdir?
Bazı diller, exemple java için düşük bir duraklama GC'si getirdi. Bu GC işin çoğunu tüm dünyayı duraklatmadan yapabilir. Bu açıkçası oldukça zor bir sorundur, çünkü iş parçacığı onu değiştirirken belleği analiz etmeyi gerektirir, bu da işlemin başlangıcında kullanılabilen ve artık bittiğinde değil veya garbaj gibi görünen verilerle sonuçlanan verilerle sonuçlanır. …

5
Bellek tarafından yönetilen diller için referans sayma düzeni?
Java ve .NET, sizin için belleği yöneten harika çöp toplayıcılara ve harici nesneleri ( Closeable, IDisposable) hızlı bir şekilde serbest bırakmak için uygun kalıplara sahiptir , ancak yalnızca tek bir nesneye aitse. Bazı sistemlerde bir kaynağın iki bileşen tarafından bağımsız olarak tüketilmesi gerekebilir ve yalnızca her iki bileşen de kaynağı …



4
Deterministik Olmayan Kaynak Yönetimi Sızdıran Bir Soyutlama mı?
Görebildiğim kadarıyla, kaynak yönetiminin iki yaygın biçimi vardır: deterministik yıkım ve açık. İlki örnekleri C ++ yıkıcıları ve akıllı işaretçiler ya da Perl'in DESTROY alt grubu, ikincisinin bir örneği Ruby'nin kaynakları yönetecek blok paradigması ya da .NET'in IDispose arayüzü olacaktır. Yeni diller, belki de referans olmayan sayma çeşitliliğinin çöp toplama …

4
C ++ 'da iş parçacıkları arasında hızlı mesaj iletimi için bellek yönetimi
Birbirine eşzamansız olarak veri mesajları göndererek iletişim kuran iki iş parçacığı olduğunu varsayalım. Her iş parçacığının bir tür mesaj kuyruğu vardır. Sorum çok düşük: Hafızayı yönetmenin en etkili yolu ne olabilir? Birkaç çözüm düşünebilirim: Gönderen, nesneyi üzerinden oluşturur new. Alıcı aramaları delete. Bellek havuzu oluşturma (belleği gönderene geri aktarmak için) …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.