purecopy
kullanıcı konfigürasyonunda veya 3. parti kütüphanelerde hiçbir zaman gerekli değildir. Aslında, normal bir Emacs örneğinden çağrıldığında no- op'tur. Gönderen Saf Depolama :
Bu işlev Emacs yapımı ve atılması haricinde bir operasyon dışıdır ; genellikle yalnızca önceden yüklenmiş Lisp dosyalarında denir.
Bazı arka plan bilgileri izler.
Saf depolama
Emacs iki aşamalı bir yapım sürecine sahiptir. Önce düz bir ikili dosya oluşturur ve sonra bu ikili dosyayı çalıştırır, seçilen yerleşik kütüphaneler kümesini yükler ve ardından işlemin bellek görüntüsünü döker ve emacs
bu dökümden gerçek ikili dosyayı oluşturur .
Bu karmaşık sürecin nedenleri daha iyi performans ve daha az bellek kullanımıdır: Ön yükleme temel Emacs Lisp kütüphaneleri daha hızlı başlatmaya izin verir, çünkü yerleşik kütüphaneleri yüklemek için başka bir IO gerekli değildir ve önceden yüklenmiş kütüphanelerden beri bellek kullanımını azaltır Tüm Emacs örnekleri arasında paylaşılabilir.
Önceden yüklenmiş kütüphaneleri içeren bu özel bellek alanı “saf depolama” dır. Daha önce bahsedilen hafıza paylaşımına izin vermek için salt “saf”. Bu nedenle, purecopy
normal Emacs örneklerinde bir operasyon yok: Yine de saf depolamaya yazılamadı. Sonuç olarak, saf depolama da çöp toplama işleminden muaf tutulur.
Bununla birlikte, önceden yüklenmiş kütüphaneler için bellek görüntüsünü oluştururken ve dump ederken, bu kütüphaneler purecopy
saf depolamada belirli nesneleri tahsis etmek için “işaretlemek” için, genellikle Emacs'ın tüm ömrü boyunca gerekli olan genellikle kullanılan nesneleri kullanabilirler.
Saf depodaki dizgiler, temel olarak global statik sabit dizgilerdir. Yana "make -k"
(hatta, muhtemelen bugün en sık kullanılan derleme komutu var) Emacs oturumları çalışan sık kullanılan olacak, bu yeniden tahsisi ve çöp toplama gereksiz önlemek için, bu dize sabiti ve statik tutmak için mantıklı.
Saf depolama Bu kavram aynı zamanda neden değiştirerek nedenidir .el
bazı yerleşik kütüphaneleri (özellikle dosyaları startup.el
, subr.el
Emacs gerçekte hiçbir zaman yükler bu kütüphanelerin kaynak dosyaları: ve diğerleri) hiçbir etkisi olmaz. Bunun yerine, bayt kodunu ikili kodunda yerleşik olarak bulunur ve bunları özel bir hafıza alanından yükler.