Last active
January 6, 2021 11:07
-
-
Save apangin/254eff29f6ff7eff898d78528fa69cdd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
java.ci.totalTime = 8135593 | |
java.cls.loadedClasses = 3053 | |
java.cls.sharedLoadedClasses = 0 | |
java.cls.sharedUnloadedClasses = 0 | |
java.cls.unloadedClasses = 0 | |
java.property.java.class.path = C:/Program Files (x86)/IDEA 2017.1/lib/jps-launcher.jar;C:/Program Files/Java/jdk1.8.0_102/lib/tools.jar;C:/Program Files (x86)/IDEA 2017.1/lib/optimizedFileManager.jar | |
java.property.java.endorsed.dirs = "" | |
java.property.java.ext.dirs = C:\Program Files\Java\jdk1.8.0_102\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext | |
java.property.java.home = C:\Program Files\Java\jdk1.8.0_102\jre | |
java.property.java.library.path = C:\Program Files\Java\jdk1.8.0_102\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS | |
java.property.java.version = 1.8.0_102 | |
java.property.java.vm.info = mixed mode | |
java.property.java.vm.name = Java HotSpot(TM) 64-Bit Server VM | |
java.property.java.vm.specification.name = Java Virtual Machine Specification | |
java.property.java.vm.specification.vendor = Oracle Corporation | |
java.property.java.vm.specification.version = 1.8 | |
java.property.java.vm.vendor = Oracle Corporation | |
java.property.java.vm.version = 25.102-b14 | |
java.rt.vmArgs = -Xmx700m -Djava.awt.headless=true -Djava.endorsed.dirs="" -Djava.net.preferIPv4Stack=true | |
java.rt.vmFlags = | |
java.threads.daemon = 5 | |
java.threads.live = 7 | |
java.threads.livePeak = 11 | |
java.threads.started = 12 | |
sun.ci.compilerThread.0.compiles = 137 | |
sun.ci.compilerThread.0.method = | |
sun.ci.compilerThread.0.time = 84 | |
sun.ci.compilerThread.0.type = 1 | |
sun.ci.compilerThread.1.compiles = 83 | |
sun.ci.compilerThread.1.method = | |
sun.ci.compilerThread.1.time = 141 | |
sun.ci.compilerThread.1.type = 1 | |
sun.ci.compilerThread.2.compiles = 1197 | |
sun.ci.compilerThread.2.method = | |
sun.ci.compilerThread.2.time = 483 | |
sun.ci.compilerThread.2.type = 1 | |
sun.ci.lastFailedMethod = sun/misc/URLClassPath$JarLoader getResource | |
sun.ci.lastFailedType = 1 | |
sun.ci.lastInvalidatedMethod = | |
sun.ci.lastInvalidatedType = 0 | |
sun.ci.lastMethod = io/netty/channel/nio/NioEventLoop select | |
sun.ci.lastSize = 803 | |
sun.ci.lastType = 1 | |
sun.ci.nmethodCodeSize = 2203488 | |
sun.ci.nmethodSize = 3634736 | |
sun.ci.osrBytes = 2648 | |
sun.ci.osrCompiles = 5 | |
sun.ci.osrTime = 212524 | |
sun.ci.standardBytes = 193843 | |
sun.ci.standardCompiles = 1410 | |
sun.ci.standardTime = 7923069 | |
sun.ci.threads = 3 | |
sun.ci.totalBailouts = 2 | |
sun.ci.totalCompiles = 1415 | |
sun.ci.totalInvalidates = 0 | |
sun.classloader.findClassTime = 1561767971 | |
sun.classloader.findClasses = 1742 | |
sun.classloader.parentDelegationTime = 310208916 | |
sun.cls.appClassBytes = 7153134 | |
sun.cls.appClassLoadCount = 2096 | |
sun.cls.appClassLoadTime = 3983933 | |
sun.cls.appClassLoadTime.self = 2026183 | |
sun.cls.classInitTime = 4704107 | |
sun.cls.classInitTime.self = 2235415 | |
sun.cls.classLinkedTime = 2633438 | |
sun.cls.classLinkedTime.self = 410722 | |
sun.cls.classVerifyTime = 2223139 | |
sun.cls.classVerifyTime.self = 789936 | |
sun.cls.defineAppClassTime = 1380705 | |
sun.cls.defineAppClassTime.self = 91952 | |
sun.cls.defineAppClasses = 1755 | |
sun.cls.initializedClasses = 2216 | |
sun.cls.isUnsyncloadClassSet = 0 | |
sun.cls.jniDefineClassNoLockCalls = 7 | |
sun.cls.jvmDefineClassNoLockCalls = 1752 | |
sun.cls.jvmFindLoadedClassNoLockCalls = 6386 | |
sun.cls.linkedClasses = 2602 | |
sun.cls.loadInstanceClassFailRate = 0 | |
sun.cls.loadedBytes = 5850872 | |
sun.cls.lookupSysClassTime = 289125 | |
sun.cls.methodBytes = 3064672 | |
sun.cls.nonSystemLoaderLockContentionRate = 0 | |
sun.cls.parseClassTime = 1726329 | |
sun.cls.parseClassTime.self = 1352678 | |
sun.cls.sharedClassLoadTime = 969 | |
sun.cls.sharedLoadedBytes = 0 | |
sun.cls.sharedUnloadedBytes = 0 | |
sun.cls.sysClassBytes = 4070355 | |
sun.cls.sysClassLoadTime = 869322 | |
sun.cls.systemLoaderLockContentionRate = 0 | |
sun.cls.time = 7960542 | |
sun.cls.unloadedBytes = 0 | |
sun.cls.unsafeDefineClassCalls = 85 | |
sun.cls.verifiedClasses = 2582 | |
sun.gc.cause = No GC | |
sun.gc.collector.0.invocations = 2 | |
sun.gc.collector.0.lastEntryTime = 9444314 | |
sun.gc.collector.0.lastExitTime = 9460538 | |
sun.gc.collector.0.name = PSScavenge | |
sun.gc.collector.0.time = 40671 | |
sun.gc.collector.1.invocations = 0 | |
sun.gc.collector.1.lastEntryTime = 0 | |
sun.gc.collector.1.lastExitTime = 0 | |
sun.gc.collector.1.name = PSParallelCompact | |
sun.gc.collector.1.time = 0 | |
sun.gc.compressedclassspace.capacity = 1966080 | |
sun.gc.compressedclassspace.maxCapacity = 1073741824 | |
sun.gc.compressedclassspace.minCapacity = 0 | |
sun.gc.compressedclassspace.used = 1835944 | |
sun.gc.generation.0.capacity = 42991616 | |
sun.gc.generation.0.maxCapacity = 244318208 | |
sun.gc.generation.0.minCapacity = 42991616 | |
sun.gc.generation.0.name = new | |
sun.gc.generation.0.space.0.capacity = 32505856 | |
sun.gc.generation.0.space.0.initCapacity = 0 | |
sun.gc.generation.0.space.0.maxCapacity = 243269632 | |
sun.gc.generation.0.space.0.name = eden | |
sun.gc.generation.0.space.0.used = 24416464 | |
sun.gc.generation.0.space.1.capacity = 5242880 | |
sun.gc.generation.0.space.1.initCapacity = 0 | |
sun.gc.generation.0.space.1.maxCapacity = 81264640 | |
sun.gc.generation.0.space.1.name = s0 | |
sun.gc.generation.0.space.1.used = 5210176 | |
sun.gc.generation.0.space.2.capacity = 5242880 | |
sun.gc.generation.0.space.2.initCapacity = 0 | |
sun.gc.generation.0.space.2.maxCapacity = 81264640 | |
sun.gc.generation.0.space.2.name = s1 | |
sun.gc.generation.0.space.2.used = 0 | |
sun.gc.generation.0.spaces = 3 | |
sun.gc.generation.1.capacity = 87031808 | |
sun.gc.generation.1.maxCapacity = 489684992 | |
sun.gc.generation.1.minCapacity = 87031808 | |
sun.gc.generation.1.name = old | |
sun.gc.generation.1.space.0.capacity = 87031808 | |
sun.gc.generation.1.space.0.initCapacity = 87031808 | |
sun.gc.generation.1.space.0.maxCapacity = 489684992 | |
sun.gc.generation.1.space.0.name = old | |
sun.gc.generation.1.space.0.used = 17117040 | |
sun.gc.generation.1.spaces = 1 | |
sun.gc.lastCause = Allocation Failure | |
sun.gc.metaspace.capacity = 15335424 | |
sun.gc.metaspace.maxCapacity = 1088421888 | |
sun.gc.metaspace.minCapacity = 0 | |
sun.gc.metaspace.used = 14966512 | |
sun.gc.policy.avgBaseFootprint = 268435456 | |
sun.gc.policy.avgMajorIntervalTime = 0 | |
sun.gc.policy.avgMajorPauseTime = 0 | |
sun.gc.policy.avgMinorIntervalTime = 2016 | |
sun.gc.policy.avgMinorPauseTime = 8 | |
sun.gc.policy.avgOldLive = 0 | |
sun.gc.policy.avgPretenuredPaddedAvg = 0 | |
sun.gc.policy.avgPromotedAvg = 169904 | |
sun.gc.policy.avgPromotedDev = 43984 | |
sun.gc.policy.avgPromotedPaddedAvg = 301856 | |
sun.gc.policy.avgSurvivedAvg = 5111588 | |
sun.gc.policy.avgSurvivedDev = 178230 | |
sun.gc.policy.avgSurvivedPaddedAvg = 5646278 | |
sun.gc.policy.avgYoungLive = 4982652 | |
sun.gc.policy.boundaryMoved = 0 | |
sun.gc.policy.changeOldGenForMajPauses = 0 | |
sun.gc.policy.changeOldGenForMinPauses = 0 | |
sun.gc.policy.changeYoungGenForMajPauses = 0 | |
sun.gc.policy.changeYoungGenForMinPauses = 0 | |
sun.gc.policy.collectors = 2 | |
sun.gc.policy.decideAtFullGc = 0 | |
sun.gc.policy.decreaseForFootprint = 0 | |
sun.gc.policy.decrementTenuringThresholdForGcCost = 0 | |
sun.gc.policy.decrementTenuringThresholdForSurvivorLimit = 0 | |
sun.gc.policy.desiredSurvivorSize = 5242880 | |
sun.gc.policy.edenSize = 32505856 | |
sun.gc.policy.freeSpace = 65011712 | |
sun.gc.policy.fullFollowsScavenge = 0 | |
sun.gc.policy.gcTimeLimitExceeded = 0 | |
sun.gc.policy.generations = 3 | |
sun.gc.policy.increaseOldGenForThroughput = 0 | |
sun.gc.policy.increaseYoungGenForThroughput = 0 | |
sun.gc.policy.incrementTenuringThresholdForGcCost = 0 | |
sun.gc.policy.liveAtLastFullGc = 32505856 | |
sun.gc.policy.liveSpace = 273418112 | |
sun.gc.policy.majorCollectionSlope = 0 | |
sun.gc.policy.majorGcCost = 0 | |
sun.gc.policy.majorPauseOldSlope = 0 | |
sun.gc.policy.majorPauseYoungSlope = 0 | |
sun.gc.policy.maxTenuringThreshold = 15 | |
sun.gc.policy.minorCollectionSlope = 0 | |
sun.gc.policy.minorGcCost = 0 | |
sun.gc.policy.minorPauseOldSlope = 0 | |
sun.gc.policy.minorPauseTime = 6 | |
sun.gc.policy.minorPauseYoungSlope = 0 | |
sun.gc.policy.mutatorCost = 99 | |
sun.gc.policy.name = ParScav:MSC | |
sun.gc.policy.oldCapacity = 87031808 | |
sun.gc.policy.oldEdenSize = 32505856 | |
sun.gc.policy.oldPromoSize = 32505856 | |
sun.gc.policy.promoSize = 32505856 | |
sun.gc.policy.promoted = 257872 | |
sun.gc.policy.scavengeSkipped = 0 | |
sun.gc.policy.survived = 5210176 | |
sun.gc.policy.survivorOverflowed = 1 | |
sun.gc.policy.tenuringThreshold = 7 | |
sun.gc.policy.youngCapacity = 37748736 | |
sun.gc.tlab.alloc = 4173747 | |
sun.gc.tlab.allocThreads = 6 | |
sun.gc.tlab.fastWaste = 1428 | |
sun.gc.tlab.fills = 79 | |
sun.gc.tlab.gcWaste = 84930 | |
sun.gc.tlab.maxFastWaste = 1408 | |
sun.gc.tlab.maxFills = 27 | |
sun.gc.tlab.maxGcWaste = 38939 | |
sun.gc.tlab.maxSlowAlloc = 4 | |
sun.gc.tlab.maxSlowWaste = 948 | |
sun.gc.tlab.slowAlloc = 5 | |
sun.gc.tlab.slowWaste = 1460 | |
sun.os.hrt.frequency = 2338437 | |
sun.os.hrt.ticks = 187327328386 | |
sun.perfdata.majorVersion = 2 | |
sun.perfdata.minorVersion = 0 | |
sun.perfdata.overflow = 0 | |
sun.perfdata.size = 65536 | |
sun.perfdata.timestamp = 445600 | |
sun.perfdata.used = 20040 | |
sun.property.sun.boot.class.path = C:\Program Files\Java\jdk1.8.0_102\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_102\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_102\jre\classes | |
sun.property.sun.boot.library.path = C:\Program Files\Java\jdk1.8.0_102\jre\bin | |
sun.rt._sync_ContendedLockAttempts = 123 | |
sun.rt._sync_Deflations = 42 | |
sun.rt._sync_EmptyNotifications = 0 | |
sun.rt._sync_FailedSpins = 0 | |
sun.rt._sync_FutileWakeups = 2 | |
sun.rt._sync_Inflations = 44 | |
sun.rt._sync_MonExtant = 256 | |
sun.rt._sync_MonInCirculation = 0 | |
sun.rt._sync_MonScavenged = 0 | |
sun.rt._sync_Notifications = 21 | |
sun.rt._sync_Parks = 53 | |
sun.rt._sync_PrivateA = 0 | |
sun.rt._sync_PrivateB = 0 | |
sun.rt._sync_SlowEnter = 0 | |
sun.rt._sync_SlowExit = 0 | |
sun.rt._sync_SlowNotify = 0 | |
sun.rt._sync_SlowNotifyAll = 0 | |
sun.rt._sync_SuccessfulSpins = 0 | |
sun.rt.applicationTime = 12597920143 | |
sun.rt.createVmBeginTime = 1486817667168 | |
sun.rt.createVmEndTime = 1486817667346 | |
sun.rt.internalVersion = Java HotSpot(TM) 64-Bit Server VM (25.102-b14) for windows-amd64 JRE (1.8.0_102-b14), built on Jun 22 2016 13:15:21 by "java_re" with MS VC++ 10.0 (VS2010) | |
sun.rt.interruptedBeforeIO = 0 | |
sun.rt.interruptedDuringIO = 0 | |
sun.rt.javaCommand = org.jetbrains.jps.cmdline.Launcher | |
sun.rt.jvmCapabilities = 1100000000000000000000000000000000000000000000000000000000000000 | |
sun.rt.jvmVersion = 426115086 | |
sun.rt.safepointSyncTime = 10145 | |
sun.rt.safepointTime = 59359 | |
sun.rt.safepoints = 31 | |
sun.rt.threadInterruptSignaled = 0 | |
sun.rt.vmInitDoneTime = 1486817667230 | |
sun.threads.vmOperationTime = 43465 | |
sun.urlClassLoader.readClassBytesTime = 235520122 | |
sun.zip.zipFile.openTime = 44745703 | |
sun.zip.zipFiles = 111 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sun.jvmstat.monitor.Monitor; | |
import sun.jvmstat.monitor.MonitoredHost; | |
import sun.jvmstat.monitor.MonitoredVm; | |
import sun.jvmstat.monitor.VmIdentifier; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.function.Function; | |
import java.util.stream.Collectors; | |
public class PerfCounterProfiler { | |
public static void main(String[] args) throws Exception { | |
MonitoredHost host = MonitoredHost.getMonitoredHost((String) null); | |
MonitoredVm vm = host.getMonitoredVm(new VmIdentifier("<PID>")); | |
List<Monitor> monitors = vm.findByPattern(".*"); | |
Map<Monitor, Object> values = monitors.stream() | |
.collect(Collectors.toMap(Function.identity(), Monitor::getValue)); | |
while (true) { | |
Thread.sleep(1000); | |
System.out.println(" --- "); | |
monitors.forEach(m -> { | |
Object newValue = m.getValue(); | |
Object oldValue = values.put(m, newValue); | |
if (!oldValue.equals(newValue)) { | |
System.out.println(m.getName() + " : " + newValue); | |
} | |
}); | |
} | |
} | |
} |
I doubt you'll find an exhaustive explanation for all the counters. The best way to understand what the counter measures is to look into OpenJDK source code (search for PerfCounter instances).
The comments in the source code are really verbose sometimes:
http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/e765322578aa/src/share/vm/runtime/perfData.hpp
About a half of PerfCounters are exposed through MXBeans or available through jstat, so it is often possible to get useful statistics elsewhere. But anyway it is convenient to have all the counters in one place.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Here is an example of counters I may check from time to time.
// Total time spent on JIT compilation
java.ci.totalTime = 1664764413
// Number of successfully compiled methods
sun.ci.totalCompiles = 66267
// Number of failed compilations
sun.ci.totalBailouts = 1
// Cumulative number of threads ever started
java.threads.started = 2417
// Total time spent in ClassLoader.findClass
sun.classloader.findClassTime = 26643927072
// Total bytes loaded by non-bootstrap ClassLoaders
sun.cls.appClassBytes = 152811197
// Time spent on loading classes by non-bootstrap ClassLoaders
sun.cls.appClassLoadTime = 86351166
// Total time spent on class initialization
sun.cls.classInitTime = 26259674
// Cumulative number of unloaded classes
java.cls.unloadedClasses = 5816
// Distribution of young generation by object age (age = number of survived collections)
sun.gc.generation.0.agetable.*
// Young GC collection count
sun.gc.collector.0.invocations = 1868
// Total young GC time
sun.gc.collector.0.time = 49520297
// Old GC collection count
sun.gc.collector.1.invocations = 68
// Total Old GC time
sun.gc.collector.1.time = 68420228
// Number of contended synchronizations
sun.rt._sync_ContendedLockAttempts = 23820
// Total stop-the-world pause time
sun.rt.safepointTime = 136996329
// Total time spent on entering safepoints
sun.rt.safepointSyncTime = 11110028