Anahtar Farkı – elden çıkarma () vs sonlandırma ()
Dispose () ve finalize () arasındaki temel fark, nesneyi yok etmeden önce sonlandırma () öğesinin çöp toplayıcı tarafından çağrılmasına karşın, Dispose () öğesinin programcı tarafından açıkça çağrılması gerektiğidir.
Gönderme (), bir nesne tarafından tutulan dosyalar, akışlar gibi yönetilmeyen kaynakları kapatmak veya serbest bırakmak için kullanılan bir yöntemdir. Sonlandırma, nesne yok edilmeden önce geçerli nesne tarafından tutulan yönetilmeyen kaynaklar üzerinde temizleme işlemleri gerçekleştirme yöntemidir.
Dispose() nedir?
En önemli avantajlarından biri. NET çerçevesinin otomatik çöp toplama sağlamasıdır. Kullanılmayan nesnelerin hafızasını otomatik olarak serbest bırakır. C ve C++ gibi programlama dillerinde, programcının bellek yönetimini kendi başına yapması gerekir. Ancak. NET çerçevesi üzerine inşa edilen C gibi dillerde çöp toplayıcı sağlar. Hafızayı yönetmeye yardımcı olur. Yönetilmeyen bellek kaynaklarını serbest bırakmak için kullanılamaz. Bu görevi gerçekleştirmek için Dispose () yöntemi kullanılabilir.
Dispose () yöntemi, veritabanı bağlantıları, dosya işleyicileri vb. gibi kaynakları serbest bırakmak için kullanılabilir. Bu yöntem otomatik olarak çağrılmaz. Bu nedenle, programcı bu yöntemi uygulamalıdır. Bu yöntem çağrıldığında, belirli yönetilmeyen kaynağın belleği serbest bırakılır. Bu yöntem, IDisposeable arabiriminde bildirilmiştir.
Sonlandırmak () nedir?
Sonlandırma yöntemi, yalnızca bir nesneye yapılan başvuru daha fazla kullanılmadığında çöp toplayıcı tarafından çağrılır. Bu yöntem, nesneyi yok etmeden hemen önce çağrılır. Bu yöntem, yıkıcı yardımıyla uygulanır. finalize yöntemi, Java.lang.object sınıfında tanımlanır. Bu yöntem korumalı olarak bildirilir. Diğer sınıflar tarafından erişimden kaçınmak için genel olarak bildirilmemiştir. Genel olarak, finalize yöntemi, belleği anında boş altmadığı için programın performansını en aza indirebilir.
Dispose() ve finalize() arasındaki benzerlik nedir?
Yönetilmeyen bir kaynak için ayrılan belleği boş altmak için hem bertaraf () hem de finalize() kullanılabilir
Dispose() ve finalize() arasındaki fark nedir?
dispose () vs finalize () |
|
Gönderme (), bir nesne tarafından tutulan dosyalar, akışlar gibi yönetilmeyen kaynakları kapatmak veya serbest bırakmak için kullanılan bir yöntemdir. | Sonlandırma, nesne yok edilmeden önce geçerli nesne tarafından tutulan yönetilmeyen kaynaklar üzerinde temizleme işlemleri gerçekleştirme yöntemidir. |
Amaç | |
Dispose yöntemi, çağrıldığında yönetilmeyen kaynakları serbest bırakmak için kullanılır. | Sonlandırma yöntemi, nesne yok edilmeden önce yönetilmeyen kaynakları serbest bırakmak için kullanılır. |
Tanımlanmış Arayüz veya Sınıf | |
Disposable () arabirimi IDisposable arabiriminde tanımlanır. | Sonlandırma (), Java.lang.object sınıfında tanımlanır. |
Çağırma Yöntemi | |
Dispose yöntemi programcı tarafından çağrılır. | Sonlandırma yöntemi çöp toplayıcı tarafından çağrılır. |
Erişim Tanımlayıcı | |
Elden çıkarma yöntemi herkese açıktır. | Sonlandırma yöntemi korumalıdır. |
Hız | |
Disclosure yöntemi anında çağrılır. | Sonlandırma yöntemi yavaş çağrılır. |
Performans | |
Elden çıkarma, programın performansını en aza indirmez. | Sonlandırma yöntemi programın performansını en aza indirebilir. |
Özet – elden çıkarma () vs kesinleştirme ()
Bu makalede, C'ta elden çıkarma ve sonlandırma yöntemleri arasındaki fark tartışılmıştır. Dispose () ve finalize () arasındaki fark, nihaileştirme () öğesinin nesneyi yok etmeden önce çöp toplayıcı tarafından çağrılmasına karşın, Dispose () öğesinin programcı tarafından açıkça çağrılması gerektiğidir.