Apple'da kıdemli bir teknik danışmanla bu konu üzerinde bir yıldan fazla bir süredir çalışıyorum ve bundan bir süre önce başka bir kıdemli danışmanla çalışıyordum. Apple Engineers'a çeşitli vesilelerle göndermek için "veri yakalama" yaptık ve Etkinlik Monitörü, Image Capture ve nihayetinde icdd'nin / Users / user_name konumunda tuttuğu bir plistte neler olduğunu göstermek için birkaç kez ekran kayıtları yaptık. / Library / Uygulama Desteği / icdd / deviceInfoCache.plist (Xcode içinde görüntüleyerek).
Bu noktada, neler olduğuna dair en iyi tahminim:
İcdd (Image Capture Device Database) işlemi tarayıcıların yoğun bir ağa gelip gittiğini görür. Simge dosyalarının bir listesini de yukarıda belirtilen deviceInfoCache.plist dosyasına yazdığı bir karma tabloda tutmaya çalışır. Evet - bu çılgınca geliyor - tarayıcıların simge dosyalarına referanslar tutuyor. Ancak daha da çılgın olan, bir nedenden dolayı, bu dosyadaki hemen hemen tüm girdilerin var olmayan .icns dosyalarını işaret etmesidir. Baktığım birkaç sistemden, dosyada binlerce giriş oldu, ancak makinelerden birinde .icns dosyalarından sadece birkaçı vardı ve diğerleri üzerinde hiçbiri yoktu. Bu dosya büyüdüğünde, icdd'nin .plist dosyasındaki girişlerin varlığını kontrol etmeye ve dosyayı değiştirmeye çok zaman harcadığına inanıyorum. Buna iki nedenden dolayı inanıyorum. İlk olarak, dizüstü bilgisayarımı eve götürdüğümde, icdd işlemi bazen bir CPU'nun yaklaşık% 100'ünde çalışmaya devam eder, ancak daha sonra onu öldürdüğümde, her seferinde "normal" yaklaşık% 0.0 ila 0.1'e geri döner. Bu nedenle, bazen evde açtığımda girişler hakkındaki bilgileri işlemeye çalıştığını düşünüyorum. Ancak meşgul ağdayken öldürdüğümde, genellikle hemen% 100'e geri döner. Image Capture'da gösterilen tarayıcı sayısı düştüğünde (genellikle yapar, ancak bir nedenden dolayı periyodik olarak yükselir), icdd sonunda yerleşecektir. İkincisi, deviceInfoCache.plist dosyasını silmek, girişlerin sayısı tekrar birikinceye kadar icdd'nin kısa bir süre için makul bir şekilde davranmasına neden olur. İcdd'nin bu girişlerin bir kopyasını bellekte sakladığını unutmayın, bu nedenle dosyayı kullanıcı hesabından silerseniz, icdd hemen hemen yeniden yazar. Ve tabi ki, icdd dosyasını silmek için yeterince uzun süre öldüremezsiniz, bu nedenle oturumu kapatıp terminal aracılığıyla başka bir yönetici hesabından silmeniz gerekir. icdd, yeniden oturum açtığınızda dosyayı yeniden oluşturur, ancak nispeten az sayıda girişi olur ve bir süre iyi çalışır.
Ölçekler hakkında bir fikir vermek için, Apple Mühendisleri Image Capture'da 85'e yakın tarayıcının görüntülendiğini görünce şok oldular. Bununla birlikte, genellikle, bu sayı aynı sistemde ve aynı zaman dilimlerinde yaklaşık 6'ya inecektir. DeviceInfoCache.plist dosyası, icdd sorunları olan baktığım sistemlerde 8.000 ila 12.600 girişe sahipti - benimki daha büyük olanı ve ben icdd sorunları yaşadığımdan beri bu eski bir makineden geçtiğine inanıyorum 2016-Aralık'ta yeni MacBook Pro'mu kurduğum andan itibaren. Plist dosyasını sildiğimde, yeni oluşturulan dosyadaki ilk giriş sayısı 44'dü ve birkaç gün boyunca icdd cpu kullanımı% 0.0'a yaklaştı. Ancak, kampüste yaklaşık 5 gün sonra, plist dosyamın 964 girişi var, ve icdd cpu kullanımı üniversitedeki yoğun ağda rutin olarak% 30 ile% 90 arasında sıçrayacaktır. Evde olduğumda, plist dosyası bir gün boyunca giriş sayısını sadece 0 ila 2 oranında artıracaktır. Önceki plist dosyamdaki 12.600 girişten sadece 2 tanesi bir "deviceName" içeriyor, geri kalanı "iconPathLocation" içeriyor ve bunların tümü varolmayan .icns dosyalarını gösteriyor. Geçerli plist ile, hala bir "deviceName" içeren tam olarak 2 giriş vardır ve geri kalanı var olmayan bir "iconPathLocation" içerir. bunların tümü varolmayan .icns dosyalarına işaret eder. Geçerli plist ile, hala bir "deviceName" içeren tam olarak 2 giriş vardır ve geri kalanı var olmayan bir "iconPathLocation" içerir. bunların tümü varolmayan .icns dosyalarına işaret eder. Geçerli plist ile, hala bir "deviceName" içeren tam olarak 2 giriş vardır ve geri kalanı var olmayan bir "iconPathLocation" içerir.
Bu nedenle, kısa vadeli çözüm plist dosyasını kullanıcı hesabınızdan çıkış yaparken terminal aracılığıyla başka bir yönetici hesabından silmektir. Umarım, bu bilgiler şu anda Kıdemli Danışmanımdan Apple Mühendislerine sağlanarak, Apple Mühendisleri icdd'nin neden bu şekilde davrandığını ve sorunu düzeltmek için yeterli bilgiye sahip olacaklar. Elbette, kısa vadeli çözümümü doğrulayabilir ve bulduklarınızı Apple'a bildirmeye devam ederseniz yardımcı olabilir.