2

我们有一个在 Centos 6.4 上运行的 java 应用程序,我们注意到 RES 大约为 378m,大于分配的最大值 256m。这是否意味着我们的应用程序正在泄漏?到目前为止,还没有发生 GC,但有很多 YGC?这说明什么?

下面是我的 jstat 结果和 MAT 结果。

Timestamp         S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      2331438.3  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331443.3  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331448.4  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331453.4  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331458.4  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331463.4  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331468.4  56.95   0.00  62.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331473.4  56.95   0.00  63.24  82.79  80.37   1362   54.337     0    0.000   54.337
      2331478.4  56.95   0.00  63.24  82.79  80.37   1362   54.337     0    0.000   54.337
      2331483.4  56.95   0.00  63.78  82.79  80.37   1362   54.337     0    0.000   54.337
      2331488.4  56.95   0.00  63.78  82.79  80.37   1362   54.337     0    0.000   54.337
      2331493.4  56.95   0.00  63.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331498.4  56.95   0.00  63.79  82.79  80.37   1362   54.337     0    0.000   54.337
      2331503.4  56.95   0.00  63.79  82.79  80.37   1362   54.337     0    0.000   54.337

垫子结果

java.lang.ref.Finalizer @ 0xf5e19670 40 92,688 
next java.lang.ref.Finalizer @ 0xf5e1a6a8 40 93,024 
next java.lang.ref.Finalizer @ 0xf5e1bda0 40 122,768 


Suspect 1.

The class "java.lang.ref.Finalizer", loaded by "<system class loader>", occupies 1,337,176 (30.93%) bytes. The memory is accumulated in one instance of "java.lang.ref.Finalizer" loaded by "<system class loader>".

Keywords
java.lang.ref.Finalizer


Suspect 2
 6 instances of "com.mysql.jdbc.JDBC4Connection", loaded by "sun.misc.Launcher$ExtClassLoader @ 0xf58bf000" occupy 432,624 (10.01%) bytes. 

Biggest instances:

•com.mysql.jdbc.JDBC4Connection @ 0xf61c54f8 - 94,864 (2.19%) bytes. 
•com.mysql.jdbc.JDBC4Connection @ 0xf61c4678 - 86,600 (2.00%) bytes. 
•com.mysql.jdbc.JDBC4Connection @ 0xf61c4bf8 - 85,456 (1.98%) bytes. 
•com.mysql.jdbc.JDBC4Connection @ 0xf626c348 - 68,000 (1.57%) bytes. 
•com.mysql.jdbc.JDBC4Connection @ 0xf626c7d0 - 68,000 (1.57%) bytes. 


Keywords
com.mysql.jdbc.JDBC4Connection
sun.misc.Launcher$ExtClassLoader @ 0xf58bf000
4

1 回答 1

1

-Xmx仅限制 JVM 的堆内存空间 除了堆空间 JVM 正在为

  • Perm 空间(类元数据)默认高达 64 MiB
  • 线程堆栈(每个线程 256k,可配置)
  • 应用程序显式分配的 I/O 缓冲区和堆外缓冲区
于 2013-04-04T12:45:55.030 回答