我正在尝试诊断 J2EE 服务器中的一些内存问题。我已经在我们的实时服务器上设置了 jconsole,我正在尝试通过它来监控 tomcat 服务器的状态。我有一个关于 jconsole 中的“线程”选项卡的快速问题。我可以在线程列表中看到一个名为 Finalizer 的线程。此线程中的“总阻塞”数量不断增加。例如,现在是 4,049,一小时前是 3,867。
Name: Finalizer
State: WAITING on java.lang.ref.ReferenceQueue$Lock@1b79cfd
Total blocked: 4,049 Total waited: 1,579
这个线程是什么意思?它与GC有某种关系吗?我已经下载了一个堆转储,其中显示等待完成的对象数量为零。
目前我的服务器的最大堆大小为 200MB,堆大小保持在 100 到 150 MB 之间,当我单击“执行 GC”时,我可以看到一些堆空间被释放。但是,这不会改变 Windows 任务管理器中这个 tomcat 进程占用的内存量,目前该进程消耗了超过 700 MB。
任何关于我应该如何去做的提示将不胜感激。如果您需要有关我的服务器设置的更多信息,请向我提问。
提前致谢。