首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过多的jstat“类加载器时间”

过多的jstat“类加载器时间”
EN

Stack Overflow用户
提问于 2014-10-01 23:05:27
回答 1查看 844关注 0票数 1

我们基于Java的服务器应用程序报告了异常高级别的加载时间:

代码语言:javascript
复制
# jstat -class 10625 1000
Loaded  Bytes  Unloaded  Bytes     Time
  4781  9165.6      114   185.2   17769.35
  4781  9165.6      114   185.2   17769.85
  4781  9165.6      114   185.2   17770.36
  4781  9165.6      114   185.2   17771.11
  4781  9165.6      114   185.2   17771.73

这是在一个已经运行了8小时的服务器上。jstat报告说它已经花费了17,769 s (~4h56m!)做类加载,大约0.5秒-0.6秒每秒钟!我们一直在追踪一个性能问题,这是我们最好的罪犯候选人。为了确保,我们检查了我们的其他Java服务: jstat在Time列中显示了一个非常低的值(即使在运行了几个小时之后,也只有几秒钟)。

我们的代码不执行常量的类加载,但我们不能排除一个行为错误的第三方库。我们启用了-verbose:gc,希望能够诊断出问题。但是,一旦我们的服务器加载了它的所有类(在流量大的一分钟内),冗长的类日志就安静下来了--我们半以为会看到一系列的活动--考虑到jstat数据。

我的问题是:

  • 这真的是一个问题吗?
  • 如果是的话,还能做些什么来诊断呢?

会很感激你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 13:25:13

这似乎是个真正的问题。如果类加载时间增加,而加载类的数量保持不变,我可能会得出结论,应用程序试图一次又一次地加载缺少的类,例如通过Class.forNameClassLoader.loadClass

如果缺少一个类,JVM将在抛出ClassNotFoundException之前对整个类路径进行扫描。如果一个类路径包含许多JAR甚至网络URL,这可能需要很长时间。

为了进一步诊断这一点,我建议instrumentClass.forNameClassLoader.loadClass方法或intercept ClassNotFoundExceptions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26152084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档