我在linux服务器上用java运行代码服务器端应用程序.我使用hibernate打开数据库会话,使用本机sql查询它,并始终通过try,catch,finally关闭此会话.
我的服务器使用非常高频率的休眠查询数据库.
我已经定义了MaxHeapSize,因为它是3000M,但它通常在RAM上使用2.7GB,它可以减少但比增加慢.有时它的内存使用量会增长到3.6GB,比我的MaxHeapSize在启动时定义的要多.
当使用的内存为3.6GB时,我尝试使用-jmap命令转储它,并获得一个大小仅为1.3GB的heapdump.
我使用eclipse MAT来分析它,这里是来自MAT的统治者树
我认为hibernate是问题,我有这么多的org.apache.commons.collections.map.AbstractReferenceMap $ ReferenceEntry.它可能无法通过垃圾收集进行处理,或者可能会变慢.
我该如何解决?
我尝试将webview实现到我的javafx应用程序中,并且我正在使用JDK 8来开发它.
当我使用webEngine加载任何HTTPS证书网站时,它工作正常:
webEngine.load("https://google.com");
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用我的HTTPS自签名证书,则无法打开它.我试图使用此代码向您显示问题:
webEngine.getLoadWorker().stateProperty().addListener(
new ChangeListener<Worker.State>() {
public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {
if (webEngine.getLoadWorker().getException() != null && newState == State.FAILED){
System.out.println(webEngine.getLoadWorker().getException().toString());
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是:
java.lang.Throwable:SSL握手失败
我尝试在使用我的webview之前添加以下代码来信任所有主机,但它不起作用:
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
}; …
Run Code Online (Sandbox Code Playgroud)