有没有办法将代码排除在Cobertura覆盖率报告之外?我们有一些方法不应包含在覆盖率报告中,因此不会降低覆盖率数字.
我知道Clover有这样的功能,但我没有找到类似的Cobertura.
我们最近从JDK6u20(Linux,32位和64位)升级到JDK6u23.从那时起,我们不能再使用jstack和jstat工具从运行过程中获取监控信息.如果我们切换回JDK6u20,一切正常.
我们正在运行Tomcat 6.根据此论坛帖子,其他人也有同样的问题:http: //forums.oracle.com/forums/thread.jspa?threadID = 2151967&tstart = 0
运行简单的普通Java进程并使用这些工具.
Jstack说:无法打开套接字文件:目标进程未响应或未加载HotSpot VM当目标进程没有响应时,可以使用-F选项.
Jstat说:找不到19799
使用Jps根本不显示正在运行的进程,所以我猜这个问题更多是JDK6u23和JDK6u24的一般性质.它有一个新的热点引擎.也许某些东西不能与Tomcat和Hotspot v19一起使用.
任何的想法?感谢帮助.
PS当然,我们将它作为同一个用户运行,我们没有更改任何其他内容.只有JDK.
附加的简单Java代码应该在使用正确的参数启动时加载所有可用的cpu核心.例如,你开始使用它
java VMTest 8 int 0
它将启动8个线程,除了循环并将2添加到整数之外什么都不做.在寄存器中运行的东西,甚至不分配新的内存.
我们现在面临的问题是,当运行这个简单的程序(当然有24个线程)时,我们没有加载24核机器(AMD 2个插槽,每个12个核心).类似的事情发生在每12个线程或更小的机器的2个程序.
所以我们怀疑JVM(Linux x64上的Sun JDK 6u20)不能很好地扩展.
有没有人看到类似的东西或有能力运行它并报告它是否在他/她的机器上运行良好(> =仅8个核心)?想法?
我在带有8个内核的Amazon EC2上尝试过这个,但是虚拟机似乎与真正的盒子不同,因此加载的行为非常奇怪.
package com.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
public class VMTest
{
public class IntTask implements Runnable
{
@Override
public void run()
{
int i = 0;
while (true)
{
i = i + 2;
}
}
}
public class StringTask implements Runnable
{
@Override
public void run()
{
int i = 0;
String s;
while (true)
{
i++;
s = …
Run Code Online (Sandbox Code Playgroud) 目前我遇到的问题是我的应用程序偶尔会显示很长的GC时间,但所有这些只是由弱参考处理引起的.所以线程停止的时间总是接近弱的ref处理时间.所有其他GC循环均为0.0001秒至0.200秒.
从gc.log(重新格式化):
10388.186: [GC[YG occupancy: 206547 K (306688 K)]10388.186: [Rescan (parallel) ,
0.1095860 secs]10388.295: [weak refs processing, 2.0799570 secs]
[1 CMS-remark: 2973838K(3853568K)] 3180386K(4160256K), 2.1899230 secs]
[Times: user=2.51 sys=0.00, real=2.18 secs]
Total time for which application threads were stopped: 2.1906890 seconds
Run Code Online (Sandbox Code Playgroud)
目前我已经有了这些设置.尝试更简单的设置,但没有变化.
-Xms4g
-Xmx4g
-XX:NewSize=128m
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:MaxGCPauseMillis=50
-XX:CMSInitiatingOccupancyFraction=50
-XX:ParallelGCThreads=16
-XX:+DisableExplicitGC
Run Code Online (Sandbox Code Playgroud)
如果我打开NewSize,我最终会得到很长的正常GC循环.该机器有8个内核,并没有为应用程序烧掉那么多的CPU.试图尽早和同时运行旧的GC.
是的,我无法摆脱弱参考使用,因为这是第三方库的一部分.