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
-~----------~----~----~----~------~----~------~--~---

Reply via email to