2012-01-30 10 views
12

मैं यहाँ शाब्दिक-आइए स्मृति रिसाव के बारे में पढ़ा, उदाहरण के लिए: Are there any problems with lexical-let or other cl-macros??? - Users list for the GNU Emacs text editor - ArchiveOrangeEmacs Lisp की शब्दावली-लीक मेमोरी कब होती है?

इसे कहते हैं:

"ध्यान दें कि शाब्दिक-देना साथ बाध्य चर कभी नहीं जारी कर रहे हैं, यहां तक ​​कि अगर वे कभी उपयोग नहीं कर रहे हैं

(loop for i from 1 to 100000 collect (lexical-let ((x i)) '())) 

और इसे स्मृति खाने को देखें। "

लेकिन मुझे लगता है कि यह कोड स्मृति को खाता है क्योंकि लूप द्वारा बनाई गई सूची बढ़ती है। तो, मैंने यह देखने के लिए कुछ elisp कोड लिखे थे कि यह कब होता है लेकिन मुझे रिसाव का उदाहरण नहीं मिला।

यह है कि जब मैं नीचे दिए गए कोड को निष्पादित करता हूं तो स्मृति समय के साथ बढ़ता है।

lambda-in-let.el

(require 'cl) 

(defvar num-loop-1 30) 
(defvar num-loop-2 100000) 

(loop for i from 1 to num-loop-1 do 
     (loop for j from 1 to num-loop-2 collect 
      (lexical-let ((x `(,i ,j))) (lambda() x)))) 

ऐसा लगता है कि कोई रिसाव मौजूद है। https://gist.github.com/1703325

जोड़ा:

यहां अधिक उदाहरण देखें इस तरह पहला उदाहरण स्मृति खाता है। जैसा कि मैंने कहा, मुझे लगता है कि यह एक आर्टिफैक्ट है।

lambda-in-let.el

+0

FWIW यहाँ 'मदद-gnu-emacs' पर थ्रेड के लिए मूल संग्रह पृष्ठ है, विज्ञापन के बिना: http://lists.gnu.org/archive/html/help- gnu-emacs/2010-12/msg00141.html –

+2

[emacs devel] (http://news.gmane.org/gmane.emacs.devel) SO – Tom

+0

की तुलना में इस तरह के प्रश्न के लिए एक बेहतर जगह है, इसके अलावा, #emacs चैनल इस प्रकार के प्रश्न पूछने के लिए फ्रीनोड पर एक अच्छी जगह हो सकती है। – vpit3833

उत्तर

2

मैं सिर्फ emacs-devel में यह पाया:

When does Emacs Lisp's lexical-let leak memory? तो ... क्या यह सही है, कि "शाब्दिक-देना साथ बाध्य चर कभी नहीं जारी किया कर रहे हैं, भले ही वे कभी इस्तेमाल नहीं किया जाता है "?

मुझे नहीं पता कि। बेशक, यह कोड बग-फ्री नहीं है, लेकिन मुझे किसी भी ठोस मामले के बारे में पता नहीं है जो इस तरह की एक बग में टक्कर लगी है।

- Re: lexical-let cause memory leaks?

संबंधित मुद्दे