On Jun 22, 12:32 pm, Marko Kocić <marko.ko...@gmail.com> wrote:
> Have you tried (.close stream) in the end of let block?
>
> On 22 јун, 16:10, BerlinBrown <berlin.br...@gmail.com> wrote:
>
> > I want to make it clear, that it probably isn't Clojure's memory
> > problem but something with my code.
>
> > Anyway, I was trying to figure out my heap memory goes up so much on
> > various operations in my application. Sure, it could be anything but
> > I know I am doing something wrong.
>
> > Here is the application, a text editor in SWT. When I open files, the
> > heap memory goes up 10 times the size of the file. So, if I open a
> > 3MB file, that is 30MB of heap memory used.
>
> >http://code.google.com/p/lighttexteditor/
> > ------------------------
>
> > There are also some bad designs I am using, still wouldn't explain a
> > 10 fold increase in memory.
>
> >http://lighttexteditor.googlecode.com/svn/trunk/light_edit/src/clojur...
>
> > So far, I have done a couple of things.
>
> > 1. Turned on warn on reflection and reduced some of the reflection
> > calls by adding type hints.
>
> > 2. Tried to reduce the number of calls to deref and not use "global?"
> > defines.
>
> > Here is the code that I think is the worst offender. Basically, a
> > java oriented approach for opening a file.
>
> > (defn open-file-util [file file-path]
> > #^{:doc "Use java oriented approach for loading a file into
> > memory" }
> > ;; Java oriented approach for opening file
> > (let [stream (new FileInputStream file-path)
> > instr (new LineNumberReader (new InputStreamReader stream))
> > ;; Use type hints to ensure a character type.
> > readBuffer #^"[C" (make-array (. Character TYPE) 2048)
> > buf (new StringBuffer)]
> > (loop [n (. instr read readBuffer)]
> > (when (> n 0)
> > (. buf append readBuffer 0 n)
> > (recur (. instr read readBuffer))))
> > ;; File info data has been collected, set some of the file
> > properties
> > (set-file-info (. file getName)
> > (. file getAbsolutePath)
> > (. file lastModified)
> > (. instr getLineNumber)
> > (. file getParent)
> > (. file canWrite)
> > (. file exists)
> > (. file length))
> > (. instr close)
> > (. buf toString)))
>
> >http://lighttexteditor.googlecode.com/svn/trunk/light_edit/src/clojur...
>
> > Here are some notes from my early analysis, also a google doc on the
> > functions that are called.
> > "memory profiling
> > clojure"http://groups.google.com/group/clojure/browse_thread/thread/b44e25f23...
(. instr close)
I have this, you say use stream close.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---