I do not know much about the JVM. I never worked with Java, though I am now working with Clojure. I am getting this error:
clojure.lang.ExceptionInfo: OOM command not allowed when used memory > 'maxmemory'. {:prefix :oom} stack trace: {:class clojure.lang.ExceptionInfo, :message \"OOM command not allowed when used memory > 'maxmemory'.\ We have a server that has 20 gigs of physical RAM, though the app itself has these memory limits: :jvm-opts ["-Xms300m" "-Xmx2000m" "-XX:-UseCompressedOops"] I saw that Sean Corfield posted this code to track memory use, so I have been using this to keep track of my app's memory usage: (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)))) Right now I have this run every 60 seconds, so I can keep track of what is happening in my app. In my logs, a few seconds after I get the OOM error, I see this output: Resource usage: Memory in use (percentage/used/max-heap): (\"6%\" \"228M\" \"3342M\") CPU usage (how-many-cpu's/load-average): [6 1.81] Free memory in jvm: [363319552]" Perhaps I am reading this wrong? It looks like the app is not using much RAM, yet I get an OOM error? This leaves me confused. In the stacktrace, the line that triggers the OOM error is a line where I write a string into Redis, using the Carmine library: (carmine/hset document-id "alert" alert-as-string) But the string alert-as-string is very small, only about 200 characters, so I can not imagine how that puts any strain on memory. -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.