Our server is experiencing memory leaking. As to investigate what happened, I used jmap
to dump JVM and got the following file:
No dump file specified
num #instances #bytes class name (module)
-------------------------------------------------------
1: 904887 79630056 java.lang.reflect.Method (java.base@13.0.2)
2: 935204 50874608 [Ljava.lang.Object; (java.base@13.0.2)
3: 889710 47099400 [B (java.base@13.0.2)
4: 85795 26006880 [C (java.base@13.0.2)
5: 518846 22286056 [I (java.base@13.0.2)
6: 781108 18746592 java.lang.String (java.base@13.0.2)
7: 382891 15315640 java.math.BigInteger (java.base@13.0.2)
8: 370774 14830960 java.math.BigDecimal (java.base@13.0.2)
9: 153329 12266320 java.lang.reflect.Constructor (java.base@13.0.2)
...
152: 1665 146520 java.util.regex.Pattern (java.base@13.0.2)
153: 3638 145520 com.newrelic.agent.deps.org.objectweb.asm.tree.LdcInsnNode
154: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48879
155: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48881
156: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48883
157: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48885
158: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48887
159: 9043 144688 exchange.api.restful.orders$fn__48874$fn__48892
160: 9006 144096 java.util.Formatter$Flags (java.base@13.0.2)
161: 8973 143568 java.util.concurrent.atomic.AtomicBoolean (java.base@13.0.2)
...
600: 296 7104 java.math.MathContext (java.base@13.0.2)
601: 221 7072 java.lang.invoke.BoundMethodHandle$Species_L (java.base@13.0.2)
602: 221 7072 java.lang.invoke.LambdaForm$NamedFunction (java.base@13.0.2)
603: 438 7008 clojure.core$distinct$step__6413
604: 291 6984 taoensso.nippy$read_kvs_into$fn__36561
605: 218 6976 sun.nio.fs.UnixPath (java.base@13.0.2)
606: 218 6976 taoensso.carmine.protocol.EnqueuedRequest
607: 173 6920 java.nio.channels.ClosedChannelException (java.base@13.0.2)
608: 431 6896 clojure.core.async.impl.ioc_macros$return_chan$fn__21752
609: 287 6888 javax.management.ImmutableDescriptor (java.management@13.0.2)
...
So as you might interpret from it, it is an API service. And judging from the number of instances, I decided exchange.api.restful.orders$fn__48874$*
is bad. (Or I am wrong. My colleague suggested redis went wrong.)
But here then goes the question: which function/api is it? How can I locate it?