我正在调用供应商的Java API,并且在某些服务器上看起来JVM在登录API(CPU使用率为100%)后进入低优先级轮询循环.其他服务器上的相同应用程序不会出现此行为.这发生在WebSphere和Tomcat上.设置环境很棘手,因此很难尝试在Eclipse中进行分析.
有没有办法分析(或其他一些检查方法)在Tomcat中运行的现有Java应用程序,以找出在此spinwait类状态下正在执行的方法?应用程序只在进入此状态时执行一种方法(供应商的方法).供应商无法复制行为(当然).
更新:
使用JConsole我能够确定谁在运行以及他们在做什么.我花了几个小时才弄清楚它为什么这样做.问题最终是供应商使用的API jar与其使用的数据库配置不完全匹配.默认情况下,在配置中存在轻微不匹配的服务器上启用跟踪和性能监视.我用了一个不同的罐子,一切都很好.
谢谢,约书亚,你的回答.JConsole非常易于设置和用于监视现有应用程序.
@Cringe - 我做了一些你建议的一些选项的实验.设置JProfiler时遇到了一些问题,看起来不错(但价格昂贵).继续前进我继续添加Eclipse Profiler插件,我将查看不同的开源分析器来比较功能.
我已阅读亚马逊的几篇评论,有些书似乎已经过时了.我目前正在使用Eclipse 3.3的MyEclipse 6.5.我有兴趣听听那些有学习RCP经验的人以及他们用来开始的参考资料.
我创建了一个网页,允许您输入一些信息,然后根据该信息在canvas元素中绘制图像.除了印刷之外,我的工作方式与我想要的一样.
有没有办法打印出canvas元素或创建一个新的窗口来绘制,这是唯一的方法吗?
更新:
答案很简单.我在考虑更复杂的解决方案.
我希望我可以选择1个以上的答案.当我用*来禁用显示时,我无法让画布打印出来.最简单的解决方案是在@media print {}内的CSS中使用form {display:none;}来关闭我用于输入的表单.感谢您及时的回复.
@media print {
form {
display:none;
}
}
Run Code Online (Sandbox Code Playgroud)