Cache perm gen bean (#876)

This commit is contained in:
xxDark 2020-06-23 23:26:30 +03:00 committed by GitHub
parent 5f204d798c
commit 77feaa857e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 4 deletions

View File

@ -76,6 +76,8 @@ public class BackgroundCompiler {
private ExecutorService executor;
private ErrorReporter reporter;
private final Object unknownPermGenBean = new Object();
private Object permGenBean = unknownPermGenBean;
private double disablePermGenFraction = DEFAULT_DISABLE_AT_PERM_GEN;
/**
@ -295,11 +297,21 @@ public class BackgroundCompiler {
* @return Usage of the perm gen space.
*/
private double getPermGenUsage() {
for (MemoryPoolMXBean item : ManagementFactory.getMemoryPoolMXBeans()) {
if (item.getName().contains("Perm Gen")) {
MemoryUsage usage = item.getUsage();
return usage.getUsed() / (double) usage.getCommitted();
Object permGenBean = this.permGenBean;
if (permGenBean == unknownPermGenBean) {
for (MemoryPoolMXBean item : ManagementFactory.getMemoryPoolMXBeans()) {
if (item.getName().contains("Perm Gen")) {
permGenBean = this.permGenBean = item;
break;
}
}
if (permGenBean == unknownPermGenBean) {
permGenBean = this.permGenBean = null;
}
}
if (permGenBean != null) {
MemoryUsage usage = ((MemoryPoolMXBean) permGenBean).getUsage();
return usage.getUsed() / (double) usage.getCommitted();
}
// Unknown