了解Java 8 / Wildfly 10应用程序

时间:2018-02-09 13:30:00

标签: java garbage-collection jvm wildfly

请帮助我了解Wildfly 10应用程序中循环System.gc()调用的必要性。

问题描述

我的应用程序在一小时内变得越来越慢。正如您在图片中看到的那样,垃圾收集后的响应时间从1000ms到大约200ms立即得到改善。然后响应时间再次上升,直到下一个GC到来。 Response time

类似的行为显示了CPU的使用情况。

enter image description here

知道什么?

我知道垃圾收集是由sun.misc.GC类触发的。堆转储还包含类以及用于执行循环System.gc()调用的Damon线程。 HeapDump

分析表明远程服务非常快。这意味着连接建立时间过长会导致响应时间过长。 显然,由于旧的"死亡"连接持续时间越来越长。远程对象。

EJB3-Stateless-Beans

我不明白的是什么?

我知道GC.java类会触发完整垃圾回收来删除不需要的远程对象。但是,我不明白为什么需要以这种方式删除这些远程对象。 (是因为这些物体经常存在于次要GC中吗?)

据我所知,客户端告诉服务器不再使用远程对象 - (DGC)Distributed Garbage Collection。 由于DGC,服务器知道不再使用远程对象。

所以我的问题是......

  1. 为什么我们需要Full GC来删除旧的远程对象?
  2. 为什么旧的远程对象会减慢我的应用程序?
  3. 更新

    与jboss 4客户端的通信会导致GC周期。 JVP启动参数是:

    -Xms4g
    -Xmx8g
    -XX:+UseCompressedOops
    -Djava.net.preferIPv4Stack=true
    -Dorg.jboss.resolver.warning=true
    

0 个答案:

没有答案