Jvm frequently fullgc
I use " jmap -dump:format=b,file=heap.bin " to analysis by IBM HeapAnalyzer
My code is following :
public class CouchBaseAccessImpl implements CouchBaseAccess, InitializingBean {
private final Log logger = LogFactory.getLog(getClass());
private String servers;
private List<String> serversList;
private static Cluster cluster;
@Override
public JsonObject getjsonByKey(String id) {
JsonDocument jd = null;
Bucket bucket = null;
try {
bucket = getBucket(DEFAULT_BUCKET_NAME);
if (bucket != null) jd = bucket.get(id);
} catch (Exception e) {
logger.error("getVoipjsonByKey:" + id + " - " + DEFAULT_BUCKET_NAME, e);
initCluster();
}
if (jd == null) return null;
return jd.content();
}
@Override
public Bucket getBucket(String name) {
try {
Bucket bucket = cluster.openBucket(name);
return bucket;
} catch (Exception e) {
logger.error("open Bucket:" + name, e);
initCluster();
try {
Bucket bucket = cluster.openBucket(name);
return bucket;
} catch (Exception e2) {
e2.printStackTrace();
}
}
return null;
}
private void initCluster() {
if (cluster != null) {
cluster.disconnect();
}
cluster = CouchbaseCluster.create(DefaultCouchbaseEnvironment.builder().queryEnabled(true).build(), serversList);
logger.info("re init Cluster complete");
}
@Override
public void afterPropertiesSet() throws Exception {
Assert.hasText(servers, "couchbase servers must not be empty!");
String[] serverArr = servers.split(",");
serversList = Arrays.asList(serverArr);
cluster = CouchbaseCluster.create(DefaultCouchbaseEnvironment.builder().queryEnabled(true).build(), serversList);
logger.info("init Cluster complete");
}
public void setServers(String servers) {
this.servers = servers;
}
}