Hi,

just found that every interaction with Clojure REPL causes one 
more DynamicClassLoader put on the Thread context class loader chain.

Here is how clojure.main/repl beginning looks like:

  (let [cl (.getContextClassLoader (Thread/currentThread))]
    (.setContextClassLoader (Thread/currentThread) 
(clojure.lang.DynamicClassLoader. cl)))

And this is how to observe it:

nREPL server started on port 19987
REPL-y 0.1.0-beta10
Clojure 1.4.0
    Exit: Control+D or (exit) or (quit)
Commands: (user/help)
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
          (user/sourcery function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
Examples from clojuredocs.org: [clojuredocs or cdoc]
          (user/clojuredocs name-here)
          (user/clojuredocs "ns-here" "name-here")
user=> (defn print-class-loader-stack
  ([]
     (print-class-loader-stack (.getContextClassLoader 
(Thread/currentThread))))
  ([cl]
     (if cl
       (do
         (pprint cl)
         (print-class-loader-stack (.getParent cl)))
       (println "*Top*"))))
  #_=>   #_=>   #_=>   #_=>   #_=>   #_=>   #_=>   #_=> 
#'user/print-class-loader-stack
user=> (print-class-loader-stack)
#<DynamicClassLoader clojure.lang.DynamicClassLoader@26a0c73f>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@6f603bdc>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@2f368c5d>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@5b31fd9>
#<AppClassLoader sun.misc.Launcher$AppClassLoader@4aad3ba4>
#<ExtClassLoader sun.misc.Launcher$ExtClassLoader@3326b249>
*Top*
nil
user=> 1
1
user=> 1
1
user=> 1
1
user=> 1
1
user=> (print-class-loader-stack)
#<DynamicClassLoader clojure.lang.DynamicClassLoader@5be04861>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@7481933a>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@273f212a>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@4178feba>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@5323961b>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@26a0c73f>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@6f603bdc>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@2f368c5d>
#<DynamicClassLoader clojure.lang.DynamicClassLoader@5b31fd9>
#<AppClassLoader sun.misc.Launcher$AppClassLoader@4aad3ba4>
#<ExtClassLoader sun.misc.Launcher$ExtClassLoader@3326b249>
*Top*
nil
user=> 

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to