当有足够的可用内存时,为什么Java垃圾收集器会启动?

Ang*_*ker 2 java garbage-collection jvm jdk1.6 windows-server-2008-r2

C#dev在这里,被迫处理Java ...我正在连接Java Web服务,这是相当大的内存和CPU.它.

事实:

  • 在Tomcat下运行,它是Java 1.6.x.
  • 它全部在Windows Server 2008 R2上,x64具有32 GB的RAM.
  • Tomcat将拥有16GB的RAM
  • Web Service通常消耗大约6.5 GB.

时不时地,Web服务受到垃圾收集风暴的影响,并且会降低处理速度(由Java Web Service的供应商决定).

我的问题,对Java GC不太了解,这就是为什么如果有足够的RAM可用,GC就会启动.当剩下的内存很少时,是否有一些设置告诉它踢?

我的参考框架是.NET GC,只有在有内存压力时才会启动.

Eri*_* J. 7

Java中有几种垃圾收集模型.您可以尝试查看哪一个对您的特定用例影响最小.看到:

通过选择合适的收集模型,我能够在Web服务中获得更顺畅/可预测的性能.