Java CPU占用过高
0
今天发现一个奇怪的问题,发现运行一个Java程序时CPU占用超过了50%。
在公司测试并没有这个问题,而且家里电脑配置比公司更好,理论上不应该出现这个问题。
后来发现这个问题的原因是没有配置JVM参数:-Xms128m -Xmx256m
暂时还不清楚原理,以后在研究。
问题找到了,并不是上面参数的问题,是由于Java11默认的HttpClient使用TLSv1.3的问题,修复代码:
public static final HttpClient newClient(int timeout) {
return HttpClient
.newBuilder()
.executor(EXECUTOR) // 线程池
.version(Version.HTTP_1_1)
.followRedirects(Redirect.NORMAL) // 重定向:正常
.sslParameters(newSSLParameters()) // SSL参数
.connectTimeout(Duration.ofSeconds(timeout)) // 超时
.build();
}
private static final SSLParameters newSSLParameters() {
final var sslParameters = new SSLParameters();
// 不使用TLSv1.3:CPU占用过高
sslParameters.setProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
return sslParameters;
}