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

Reply via email to