Shantanu, Thank you. That is great information.
On Wednesday, September 12, 2012 1:50:32 PM UTC-4, Shantanu Kumar wrote: > > Also look at java.lang.Runtime class methods maxMemory, freeMemory and > totalMemory: > > http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html > > Shantanu > > On Sep 12, 10:45 pm, larry google groups <lawrencecloj...@gmail.com> > wrote: > > Thank you much! > > > > > > > > > > > > > > > > On Wednesday, September 12, 2012 1:21:20 PM UTC-4, Sean Corfield wrote: > > > > > Here's some code we use to get memory and CPU usage in a displayable > form: > > > > > (defn- as-megabytes > > > "Given a sequence of byte amounts, return megabyte amounts > > > as string, with an M suffix." > > > [memory] > > > (map #(str (int (/ % 1024 1024)) "M") memory)) > > > > > (defn- as-percentage > > > "Given a pair of values, return the percentage as a string." > > > [[a b]] > > > (str (int (* 100 (/ a b))) "%")) > > > > > (defn- memory-bean > > > "Return the MemoryMXBean." > > > [] > > > (java.lang.management.ManagementFactory/getMemoryMXBean)) > > > > > (defn- heap-usage > > > "Given a MemoryMXBean, return the heap memory usage." > > > [^java.lang.management.MemoryMXBean bean] > > > (.getHeapMemoryUsage bean)) > > > > > (defn- heap-used-max > > > "Given heap memory usage, return a pair of used/max values." > > > [^java.lang.management.MemoryUsage usage] > > > [(.getUsed usage) (.getMax usage)]) > > > > > (defn memory-usage > > > "Return percentage, used, max heap as strings." > > > [] > > > (let [used-max (-> (memory-bean) (heap-usage) (heap-used-max))] > > > (cons (as-percentage used-max) > > > (as-megabytes used-max)))) > > > > > (defn- operating-system-bean > > > "Return the OperatingSystemMXBean." > > > [] > > > (java.lang.management.ManagementFactory/getOperatingSystemMXBean)) > > > > > (defn- cpus > > > "Given an OSMXBean, return the number of processors." > > > [^java.lang.management.OperatingSystemMXBean bean] > > > (.getAvailableProcessors bean)) > > > > > (defn- load-average > > > "Given an OSMXBean, return the load average for the last minute." > > > [^java.lang.management.OperatingSystemMXBean bean] > > > (.getSystemLoadAverage bean)) > > > > > (defn- cpu-percentage > > > "Given the number of CPUs and the load-average, return the > > > percentage utilization as a string." > > > [[cpus load-average]] > > > (str (int (* 100 (/ load-average cpus))) "%")) > > > > > (defn cpu-usage > > > "Return utilization (as a string) and number of CPUs and load > average." > > > [] > > > (let [bean (operating-system-bean) > > > data ((juxt cpus load-average) bean)] > > > (cons (cpu-percentage data) > > > data))) > > > > > On Wed, Sep 12, 2012 at 10:12 AM, larry google groups > > > <lawrenc...@gmail.com <javascript:>> wrote: > > > > I need to know how much memory my app is using (it is a long running > > > > service). I see that some people have asked about how to measue > memory > > > use. > > > > Robert McIntyre asked, "get the total memory used by a data > structure?" > > > Some > > > > of the answers imply that it is easy to get the total memory use of > the > > > app > > > > (much easier than getting the memory used by a particular data > > > structure?). > > > > I am ignorant of the JVM. How can I find the total memory used at > any > > > given > > > > moment by my app? > > > > > > Goal: I wrote a small app that uses Ring and Moustache and Enlive. > It > > > lives > > > > on my server and runs perpetually. I worry about it crashing, or > > > becoming > > > > overloaded. I am setting up some ping services (not sure which yet, > > > Nagios, > > > > or Puppet or something) to ask the app "Are you still alive?" I've > > > > established a special Moustache route just for the ping. It occurred > to > > > me > > > > that the ping could get some useful info, like memory, and save that > to > > > a > > > > file. That would give me the a good time series about the real world > > > memory > > > > use, maybe every 5 minutes. > > > > > > I established the app with this JVM setting: > > > > > > :jvm-opts ["-Xmx4000m"] > > > > > > Within that limit, I'd like to know what is going on. > -- 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