From 428bd427e4df061acd5d28e088a01e77e0fe79b8 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 8 Sep 2022 14:35:06 +0200 Subject: [PATCH] Integrate Android Studio updates and tests for memory snapshot analysis GitOrigin-RevId: 5a66bb48a91a1ced2b239eb7b3995b161595caa5 --- .../intellij/diagnostic/hprof/Analyzer.java | 9 +- .../hprof/analysis/AnalysisConfig.kt | 38 +- .../hprof/analysis/AnalysisContext.kt | 4 + .../analysis/AnalyzeClassloaderReferences.kt | 16 +- .../hprof/analysis/AnalyzeDisposer.kt | 547 ++++++++++---- .../diagnostic/hprof/analysis/AnalyzeGraph.kt | 691 ++++++++++++++++-- .../hprof/analysis/ClassNomination.kt | 2 +- .../hprof/analysis/GCRootPathsTree.kt | 145 ++-- .../hprof/analysis/HProfAnalysis.kt | 25 +- .../hprof/classstore/ClassDefinition.kt | 3 + .../hprof/navigator/ObjectNavigator.kt | 20 +- .../diagnostic/hprof/util/AnalysisReport.kt | 18 + .../hprof/util/FileBackedUShortList.kt | 40 + .../diagnostic/hprof/util/HprofWriter.kt | 290 ++++++++ .../diagnostic/hprof/util/ListProvider.kt | 22 + .../diagnostic/hprof/util/RefIndexUtil.kt | 45 ++ .../diagnostic/hprof/util/TreeNode.kt | 21 + .../diagnostic/hprof/util/TreeVisualizer.kt | 56 ++ .../diagnostic/hprof/util/UShortList.kt | 21 + .../visitors/CollectRootReasonsVisitor.kt | 5 +- .../hprof/visitors/RemapIDsVisitor.kt | 2 +- .../intellij/ide/plugins/DynamicPlugins.kt | 6 +- .../intellij.platform.tests.iml | 1 + .../testClassNameClash.1.8.txt | 29 + .../testClassNameClash.17.txt | 29 + .../analysis-baseline/testClassNameClash.txt | 29 + .../testDisposerTreeSummarySection.txt | 12 + .../testDominatorTreeFlameGraph.17.txt | 32 + .../testDominatorTreeFlameGraph.txt | 32 + .../testIgnoreRootWithNoMatchingObject.17.txt | 22 + .../testIgnoreRootWithNoMatchingObject.txt | 22 + .../testJavaFrameGCRootPriority.1.8.txt | 29 + .../testJavaFrameGCRootPriority.17.txt | 29 + .../testJavaFrameGCRootPriority.txt | 29 + .../testPathsThroughDifferentFields.1.8.txt | 105 +++ .../testPathsThroughDifferentFields.17.txt | 105 +++ .../testPathsThroughDifferentFields.txt | 105 +++ .../testData/diagnostic/sample-report.txt | 283 +++++++ .../testData/diagnostic/sample.hprof | Bin 0 -> 1620289 bytes .../diagnostic/hprof/FileBackedHashMapTest.kt | 77 ++ .../diagnostic/hprof/FileBackedIntListTest.kt | 74 ++ .../intellij/diagnostic/hprof/HProfBuilder.kt | 329 +++++++++ .../hprof/HProfEventBasedParserTest.kt | 143 ++++ .../diagnostic/hprof/HProfScenarioRunner.kt | 212 ++++++ .../diagnostic/hprof/HProfTestUtils.kt | 31 + .../diagnostic/hprof/HeapAnalysisTest.kt | 273 +++++++ .../hprof/ObjectLayoutAssumptionTest.kt | 50 ++ .../diagnostic/hprof/ObjectNavigatorTest.kt | 123 ++++ .../diagnostic/hprof/ObjectTreeTestWrapper.kt | 36 + 49 files changed, 3908 insertions(+), 359 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/AnalysisReport.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/FileBackedUShortList.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/HprofWriter.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/ListProvider.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/RefIndexUtil.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeNode.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeVisualizer.kt create mode 100644 platform/platform-impl/src/com/intellij/diagnostic/hprof/util/UShortList.kt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.1.8.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.17.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testDisposerTreeSummarySection.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.17.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.17.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.1.8.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.17.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.1.8.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.17.txt create mode 100644 platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.txt create mode 100644 platform/platform-tests/testData/diagnostic/sample-report.txt create mode 100644 platform/platform-tests/testData/diagnostic/sample.hprof create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedHashMapTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedIntListTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfBuilder.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfEventBasedParserTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfScenarioRunner.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfTestUtils.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HeapAnalysisTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectLayoutAssumptionTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectNavigatorTest.kt create mode 100644 platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectTreeTestWrapper.kt diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/Analyzer.java b/platform/platform-impl/src/com/intellij/diagnostic/hprof/Analyzer.java index d4d13e5d008f..9eb07f9183b2 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/Analyzer.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/Analyzer.java @@ -20,10 +20,11 @@ import com.intellij.diagnostic.hprof.analysis.AnalysisContext; import com.intellij.diagnostic.hprof.analysis.AnalyzeClassloaderReferencesGraph; import com.intellij.diagnostic.hprof.analysis.AnalyzeGraph; import com.intellij.diagnostic.hprof.analysis.HProfAnalysis; +import com.intellij.diagnostic.hprof.util.ListProvider; import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressIndicator; -import kotlin.jvm.functions.Function2; +import kotlin.jvm.functions.Function3; import java.io.IOException; import java.nio.channels.FileChannel; @@ -81,7 +82,7 @@ public final class Analyzer { Path hprofPath; ProgressIndicator progress; - Function2 analysisCallback; + Function3 analysisCallback; boolean onlyStrongReferences = false; boolean includeClassesAsRoots = true; int index = 0; @@ -95,13 +96,13 @@ public final class Analyzer { if (args[index].equals("-plugin")) { index++; String pluginId = args[index]; - analysisCallback = (analysisContext, progressIndicator) -> new AnalyzeClassloaderReferencesGraph(analysisContext, pluginId).analyze(progressIndicator); + analysisCallback = (analysisContext, listProvider, progressIndicator) -> new AnalyzeClassloaderReferencesGraph(analysisContext, listProvider, pluginId).analyze(progressIndicator).getMainReport().toString(); onlyStrongReferences = true; includeClassesAsRoots = false; index++; } else { - analysisCallback = (analysisContext, progressIndicator) -> new AnalyzeGraph(analysisContext).analyze(progressIndicator); + analysisCallback = (analysisContext, listProvider, progressIndicator) -> new AnalyzeGraph(analysisContext, listProvider).analyze(progressIndicator).getMainReport().toString(); } hprofPath = Paths.get(args[index]); diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisConfig.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisConfig.kt index 3c3498714c75..9ecf0cbb86b2 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisConfig.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisConfig.kt @@ -20,7 +20,8 @@ class AnalysisConfig( val histogramOptions: HistogramOptions = HistogramOptions(), val disposerOptions: DisposerOptions = DisposerOptions(), val traverseOptions: TraverseOptions = TraverseOptions(), - val metaInfoOptions: MetaInfoOptions = MetaInfoOptions() + val metaInfoOptions: MetaInfoOptions = MetaInfoOptions(), + val dominatorTreeOptions: DominatorTreeOptions = DominatorTreeOptions() ) { class PerClassOptions( @@ -30,23 +31,21 @@ class AnalysisConfig( ) class TreeDisplayOptions( - val minimumObjectSize: Int = 20_000_000, - val minimumObjectCount: Int = 20_000, + val minimumObjectSize: Int = 30_000_000, + val minimumObjectCount: Int = 50_000, val minimumSubgraphSize: Long = 100_000_000, - val minimumObjectCountPercent: Int = 10, + val minimumObjectCountPercent: Int = 15, val maximumTreeDepth: Int = 80, val maximumIndent: Int = 40, val minimumPaths: Int = 2, val headLimit: Int = 100, val tailLimit: Int = 25, - val showFieldNames: Boolean = false, val smartIndent: Boolean = true, val showSize: Boolean = true ) { companion object { fun default() = TreeDisplayOptions() - fun all(showFieldNames: Boolean = false, - smartIndent: Boolean = true, + fun all(smartIndent: Boolean = true, showSize: Boolean = true) = TreeDisplayOptions(minimumObjectSize = 0, minimumObjectCount = 0, @@ -55,7 +54,6 @@ class AnalysisConfig( headLimit = Int.MAX_VALUE, tailLimit = 0, minimumPaths = Int.MAX_VALUE, - showFieldNames = showFieldNames, smartIndent = smartIndent, showSize = showSize) } @@ -64,28 +62,48 @@ class AnalysisConfig( class HistogramOptions( val includeByCount: Boolean = true, val includeBySize: Boolean = true, + val includeSummary: Boolean = true, val classByCountLimit: Int = 50, val classBySizeLimit: Int = 10 ) class DisposerOptions( val includeDisposerTree: Boolean = true, + val includeDisposerTreeSummary: Boolean = true, val includeDisposedObjectsSummary: Boolean = true, val includeDisposedObjectsDetails: Boolean = true, val disposedObjectsDetailsTreeDisplayOptions: TreeDisplayOptions = TreeDisplayOptions(minimumSubgraphSize = 5_000_000, headLimit = 70, - tailLimit = 5) + tailLimit = 5), + val disposerTreeSummaryOptions: DisposerTreeSummaryOptions = DisposerTreeSummaryOptions() + ) + + class DisposerTreeSummaryOptions( + val maxDepth: Int = 20, + val headLimit: Int = 400, + val nodeCutoff: Int = 20 ) class TraverseOptions( val onlyStrongReferences: Boolean = false, - val includeClassesAsRoots: Boolean = true + val includeClassesAsRoots: Boolean = true, + val includeDisposerRelationships: Boolean = true, + val includeFieldInformation: Boolean = true ) class MetaInfoOptions( val include: Boolean = true ) + class DominatorTreeOptions( + val includeDominatorTree: Boolean = true, + val maxDominatorIterations: Int = 2_000, + val minNodeSize: Int = 100_000, + val maxDepth: Int = 30, + val headLimit: Int = 5_000, + val diskSpaceThreshold: Long = 500_000_000L + ) + companion object { fun getDefaultConfig(nominatedClasses: List) = AnalysisConfig(PerClassOptions(nominatedClasses)) } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisContext.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisContext.kt index 735639df29cb..28fd32a6ff08 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisContext.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalysisContext.kt @@ -19,6 +19,8 @@ import com.intellij.diagnostic.hprof.histogram.Histogram import com.intellij.diagnostic.hprof.navigator.ObjectNavigator import com.intellij.diagnostic.hprof.util.IntList import com.intellij.diagnostic.hprof.util.UByteList +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap +import it.unimi.dsi.fastutil.ints.IntArrayList import it.unimi.dsi.fastutil.ints.IntOpenHashSet class AnalysisContext( @@ -32,4 +34,6 @@ class AnalysisContext( ) { val classStore = navigator.classStore val disposedObjectsIDs = IntOpenHashSet() + val disposerParentToChildren = Int2ObjectOpenHashMap() + var disposerTreeObjectId = 0 } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeClassloaderReferences.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeClassloaderReferences.kt index 82b80b802642..cfcc1fe7c0ea 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeClassloaderReferences.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeClassloaderReferences.kt @@ -1,13 +1,16 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.diagnostic.hprof.analysis +import com.intellij.diagnostic.hprof.util.AnalysisReport +import com.intellij.diagnostic.hprof.util.ListProvider import com.intellij.ide.plugins.cl.PluginClassLoader import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.progress.ProgressIndicator -class AnalyzeClassloaderReferencesGraph(analysisContext: AnalysisContext, val pluginId: String) : AnalyzeGraph(analysisContext) { - override fun analyze(progress: ProgressIndicator): String { - traverseInstanceGraph(progress) +class AnalyzeClassloaderReferencesGraph(analysisContext: AnalysisContext, listProvider: ListProvider, val pluginId: String) + : AnalyzeGraph(analysisContext, listProvider) { + override fun analyze(progress: ProgressIndicator): AnalysisReport = AnalysisReport().apply { + traverseInstanceGraph(progress, this) val navigator = analysisContext.navigator for (l in 1..navigator.instanceCount) { @@ -19,15 +22,14 @@ class AnalyzeClassloaderReferencesGraph(analysisContext: AnalysisContext, val pl if (navigator.getStringInstanceFieldValue() == pluginId) { val objectId = analysisContext.parentList[l.toInt()] if (objectId == 0) { - return "" + return@apply } - val gcRootPathsTree = GCRootPathsTree(analysisContext, AnalysisConfig.TreeDisplayOptions.all(showFieldNames = true, showSize = false), null) + val gcRootPathsTree = GCRootPathsTree(analysisContext, AnalysisConfig.TreeDisplayOptions.all(showSize = false), null) gcRootPathsTree.registerObject(l.toInt()) - return gcRootPathsTree.printTree() + mainReport.append(gcRootPathsTree.printTree()) } } } - return "" } } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeDisposer.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeDisposer.kt index d4c714e54b54..567f094dcb71 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeDisposer.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeDisposer.kt @@ -15,22 +15,29 @@ */ package com.intellij.diagnostic.hprof.analysis +import com.intellij.util.ExceptionUtil +import it.unimi.dsi.fastutil.ints.IntArrayList +import java.util.ArrayDeque +import java.util.Stack +import java.util.function.LongConsumer import com.intellij.diagnostic.hprof.classstore.ClassDefinition import com.intellij.diagnostic.hprof.navigator.ObjectNavigator +import com.intellij.diagnostic.hprof.util.TreeNode +import com.intellij.diagnostic.hprof.util.TreeVisualizer +import com.intellij.diagnostic.hprof.util.TruncatingPrintBuffer import com.intellij.diagnostic.hprof.util.HeapReportUtils.toPaddedShortStringAsSize import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsCount import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsSize -import com.intellij.diagnostic.hprof.util.TruncatingPrintBuffer -import it.unimi.dsi.fastutil.longs.LongArrayList -import it.unimi.dsi.fastutil.longs.LongList -import it.unimi.dsi.fastutil.longs.LongOpenHashSet +import it.unimi.dsi.fastutil.longs.* import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap -import java.util.* -internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { - data class ClassGrouping(val childClass: ClassDefinition, - val parentClass: ClassDefinition?, - val rootClass: ClassDefinition) +class AnalyzeDisposer(private val analysisContext: AnalysisContext) { + + private var prepareException: Exception? = null + + data class Grouping(val childClass: ClassDefinition, + val parentClass: ClassDefinition?, + val rootClass: ClassDefinition) class InstanceStats { private val parentIds = LongArrayList() @@ -54,124 +61,342 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { ) } - fun prepareDisposerTreeSection(): String { + fun prepareDisposerChildren() { + prepareException = null + val result = analysisContext.disposerParentToChildren + result.clear() + if (!analysisContext.classStore.containsClass("com.intellij.openapi.util.Disposer")) { - return "" - } - val nav = analysisContext.navigator - - val result = StringBuilder() - - nav.goToStaticField("com.intellij.openapi.util.Disposer", "ourTree") - assert(!nav.isNull()) - nav.goToInstanceField("com.intellij.openapi.util.ObjectTree", "myRootNode") - val rootObjectNodeIds:LongList = getObjectNodeChildrenIds(nav) - - val groupingToObjectStats = HashMap() - val maxTreeDepth = 200 - val tooDeepObjectClasses = HashSet() - for (i in 0 until rootObjectNodeIds.size) { - val rootObjectNodeId = rootObjectNodeIds.getLong(i) - nav.goTo(rootObjectNodeId) - if (nav.isNull()) continue - val rootObjectId = nav.getInstanceFieldObjectId("com.intellij.openapi.util.ObjectNode", "myObject") - val rootObjectClass = nav.getClassForObjectId(rootObjectId) - nav.goTo(rootObjectNodeId) - visitObjectTreeRecursively(nav, rootObjectNodeId, 0L, null, rootObjectId, rootObjectClass, - tooDeepObjectClasses, maxTreeDepth, 0, groupingToObjectStats) - } - - TruncatingPrintBuffer(400, 0, result::appendLine).use { buffer -> - groupingToObjectStats - .entries - .asSequence() - .sortedByDescending { it.value.objectCount() } - .groupBy { it.key.rootClass } - .forEach { (rootClass, entries) -> - buffer.println("Root: ${rootClass.name}") - TruncatingPrintBuffer(100, 0, buffer::println).use { buffer -> - entries.forEach { (classGrouping, instanceStats) -> - printDisposerTreeReportLine(buffer, classGrouping, instanceStats) - } - } - buffer.println() - } - } - - if (tooDeepObjectClasses.size > 0) { - result.appendLine("Skipped analysis of objects too deep in disposer tree:") - tooDeepObjectClasses.forEach { - result.appendLine(" * ${nav.classStore.getShortPrettyNameForClass(it)}") - } - } - - return result.toString() - } - - // list of ids of ObjectNodes stored in the current ObjectNode.myChildren - private fun getObjectNodeChildrenIds(nav: ObjectNavigator): LongList { - nav.goToInstanceField("com.intellij.openapi.util.ObjectNode", "myChildren") - if (nav.getClass().name == Collections.emptyList().javaClass.name) { - // no children - return LongList.of() - } - else { - nav.goToInstanceField("com.intellij.util.SmartList", "myElem") - if (nav.isNull()) return LongList.of() - if (nav.getClass().isArray()) { - return nav.getReferencesCopy() - } - else { - // myElem is ObjectNode - return LongList.of(nav.id) - } - } - } - - // visit ObjectTree starting with the ObjectNode pointed to by currentNodeId, - // descending recursively through the "ObjectNode.myChildren" references, - // gathering statistics into "groupingToObjectStats" along the way - private fun visitObjectTreeRecursively(nav: ObjectNavigator, - currentNodeId: Long, - parentObjectId: Long, - parentObjectClass: ClassDefinition?, - rootObjectId: Long, - rootObjectClass: ClassDefinition, - tooDeepObjectClasses: HashSet, - maxTreeDepth: Int, - currentTreeDepth: Int, - groupingToObjectStats: HashMap) { - nav.goTo(currentNodeId) - if (nav.isNull()) return - val currentObjectId = nav.getInstanceFieldObjectId("com.intellij.openapi.util.ObjectNode", "myObject") - val currentObjectClass = nav.getClassForObjectId(currentObjectId) - - groupingToObjectStats - .getOrPut(ClassGrouping(currentObjectClass, parentObjectClass, rootObjectClass)) { InstanceStats() } - .registerObject(parentObjectId, rootObjectId) - - if (currentTreeDepth >= maxTreeDepth) { - tooDeepObjectClasses.add(currentObjectClass) return } + try { + val nav = analysisContext.navigator - nav.goTo(currentNodeId) - val childrenNodeIds = getObjectNodeChildrenIds(nav) - for (i in 0 until childrenNodeIds.size) { - val childNodeId = childrenNodeIds.getLong(i) - visitObjectTreeRecursively(nav, childNodeId, currentObjectId, currentObjectClass, rootObjectId, rootObjectClass, - tooDeepObjectClasses, maxTreeDepth, currentTreeDepth + 1, groupingToObjectStats) + nav.goToStaticField("com.intellij.openapi.util.Disposer", "ourTree") + analysisContext.disposerTreeObjectId = nav.id.toInt() + + goToArrayOfDisposableObjectNodes(nav) + nav.getReferencesCopy().forEach { + if (it == 0L) return@forEach + + nav.goTo(it) + verifyClassIsObjectNode(nav.getClass()) + val objectNodeParentId = nav.getInstanceFieldObjectId(null, "myParent") + val childId = nav.getInstanceFieldObjectId(null, "myObject") + nav.goTo(objectNodeParentId) + + val parentId = if (nav.isNull()) { + 0L + } + else { + nav.getInstanceFieldObjectId(null, "myObject") + } + + val childrenList = if (result.containsKey(parentId.toInt())) { + result.get(parentId.toInt()) + } + else { + val list = IntArrayList() + result.put(parentId.toInt(), list) + list + } + childrenList.add(childId.toInt()) + } + result.values.forEach(IntArrayList::trim) + } + catch (ex: Exception) { + prepareException = ex + } + } + + private fun goToArrayOfDisposableObjectNodes(nav: ObjectNavigator) { + nav.goToStaticField("com.intellij.openapi.util.Disposer", "ourTree") + + analysisContext.disposerTreeObjectId = nav.id.toInt() + + verifyClassIsObjectTree(nav.getClass()) + + if (nav.isNull()) { + throw ObjectNavigator.NavigationException("Disposer.ourTree == null") + } + nav.goToInstanceField(null, "myObject2NodeMap") + if (nav.getClass().name == "gnu.trove.THashMap") { + nav.goToInstanceField("gnu.trove.THashMap", "_values") + } + else { + nav.goToInstanceField("it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap", "value") + } + if (nav.isNull()) { + throw ObjectNavigator.NavigationException("Collection of children is null") + } + if (!nav.getClass().isArray()) { + throw ObjectNavigator.NavigationException("Invalid type of map values collection: ${nav.getClass().name}") + } + } + + private fun verifyClassIsObjectNode(clazzObjectTree: ClassDefinition) { + if (clazzObjectTree.undecoratedName != "com.intellij.openapi.util.objectTree.ObjectNode" && + clazzObjectTree.undecoratedName != "com.intellij.openapi.util.ObjectNode") { + throw ObjectNavigator.NavigationException("Wrong type, expected ObjectNode: ${clazzObjectTree.name}") + } + } + + private fun verifyClassIsObjectTree(clazzObjectTree: ClassDefinition) { + if (clazzObjectTree.undecoratedName != "com.intellij.openapi.util.objectTree.ObjectTree" && + clazzObjectTree.undecoratedName != "com.intellij.openapi.util.ObjectTree") { + throw ObjectNavigator.NavigationException("Wrong type, expected ObjectTree: ${clazzObjectTree.name}") + } + } + + private class DisposerNode(val className: String) : TreeNode { + var count = 0 + var subtreeSize = 0 + var filteredSubtreeSize = 0 + val children = HashMap() + + fun equals(other: DisposerNode): Boolean = className == other.className + + override fun equals(other: Any?): Boolean = other != null && other is DisposerNode && equals(other) + override fun hashCode() = className.hashCode() + override fun description(): String = "[$subtreeSize] $count $className" + override fun children(): Collection = children.values.sortedByDescending { it.subtreeSize } + + fun addInstance() { + count++ + } + + fun getChildForClassName(name: String): DisposerNode = children.getOrPut(name, { DisposerNode(name) }) + } + + private enum class SubTreeUpdaterOperation { PROCESS_CHILDREN, UPDATE_SIZE } + + fun prepareDisposerTreeSummarySection(options: AnalysisConfig.DisposerTreeSummaryOptions): String = buildString { + TruncatingPrintBuffer(options.headLimit, 0, this::appendLine).use { buffer -> + if (!analysisContext.classStore.containsClass("com.intellij.openapi.util.Disposer")) { + return@buildString + } + + prepareException?.let { + buffer.println(ExceptionUtil.getThrowableText(it)) + return@buildString + } + + val nav = analysisContext.navigator + val objectId2Children = Long2ObjectOpenHashMap() + val topLevelObjectIds = LongArrayList() + + // Build a map: object -> list of its disposable children + // Collect top-level objects (i.e. have no parent) + try { + goToArrayOfDisposableObjectNodes(nav) + + nav.getReferencesCopy().forEach { childId -> + if (childId == 0L) return@forEach + + nav.goTo(childId) + verifyClassIsObjectNode(nav.getClass()) + + val objectNodeParentId = nav.getInstanceFieldObjectId(null, "myParent") + val objectId = nav.getInstanceFieldObjectId(null, "myObject") + nav.goTo(objectNodeParentId) + + if (!objectId2Children.containsKey(objectId)) + objectId2Children[objectId] = LongArrayList() + + if (nav.isNull()) { + topLevelObjectIds.add(objectId) + } + else { + verifyClassIsObjectNode(nav.getClass()) + val parentId = nav.getInstanceFieldObjectId(null, "myObject") + + var children = objectId2Children.get(parentId) + if (children == null) { + children = LongArrayList() + objectId2Children[parentId] = children + } + children.add(objectId) + } + true + } + + val rootNode = DisposerNode("") + + data class StackObject(val node: DisposerNode, val childrenIds: LongCollection) + + val stack = Stack() + stack.push(StackObject(rootNode, topLevelObjectIds)) + + while (!stack.empty()) { + val (currentNode, childrenIds) = stack.pop() + + val nodeToChildren = HashMap() + childrenIds.forEach(LongConsumer { + val childClassName = nav.getClassForObjectId(it).name + val childNode = currentNode.getChildForClassName(childClassName) + childNode.addInstance() + nodeToChildren.getOrPut(childNode, { LongArrayList() }).addAll(objectId2Children[it]) + }) + nodeToChildren.forEach { (node, children) -> stack.push(StackObject(node, children)) } + } + + // Update subtree size + data class SubtreeSizeUpdateStackObject(val node: DisposerNode, val operation: SubTreeUpdaterOperation) + + val nodeStack = Stack() + nodeStack.push(SubtreeSizeUpdateStackObject(rootNode, SubTreeUpdaterOperation.PROCESS_CHILDREN)) + + while (!nodeStack.isEmpty()) { + val (currentNode, operation) = nodeStack.pop() + if (operation == SubTreeUpdaterOperation.PROCESS_CHILDREN) { + currentNode.subtreeSize = currentNode.count + currentNode.filteredSubtreeSize = currentNode.count + nodeStack.push(SubtreeSizeUpdateStackObject(currentNode, SubTreeUpdaterOperation.UPDATE_SIZE)) + currentNode.children.values.forEach { + nodeStack.push(SubtreeSizeUpdateStackObject(it, SubTreeUpdaterOperation.PROCESS_CHILDREN)) + } + } + else { + assert(operation == SubTreeUpdaterOperation.UPDATE_SIZE) + + currentNode.children.values.forEach { currentNode.subtreeSize += it.subtreeSize } + currentNode.children.entries.removeIf { it.value.filteredSubtreeSize < options.nodeCutoff } + currentNode.children.values.forEach { currentNode.filteredSubtreeSize += it.subtreeSize } + } + } + val visualizer = TreeVisualizer() + buffer.println("Cutoff: ${options.nodeCutoff}") + buffer.println("Count of disposable objects: ${rootNode.subtreeSize}") + buffer.println() + rootNode.children().forEach { + visualizer.visualizeTree(it, buffer, analysisContext.config.disposerOptions.disposerTreeSummaryOptions) + buffer.println() + } + } + catch (ex: Exception) { + buffer.println(ExceptionUtil.getThrowableText(ex)) + } + } + } + + fun prepareDisposerTreeSection(): String = buildString { + if (!analysisContext.classStore.containsClass("com.intellij.openapi.util.Disposer")) { + return@buildString + } + + prepareException?.let { + appendLine(ExceptionUtil.getThrowableText(it)) + return@buildString + } + + val nav = analysisContext.navigator + + try { + goToArrayOfDisposableObjectNodes(nav) + + val groupingToObjectStats = HashMap() + val maxTreeDepth = 200 + val tooDeepObjectClasses = HashSet() + nav.getReferencesCopy().forEach { + if (it == 0L) return@forEach + + nav.goTo(it) + verifyClassIsObjectNode(nav.getClass()) + val objectNodeParentId = nav.getInstanceFieldObjectId(null, "myParent") + val objectNodeObjectId = nav.getInstanceFieldObjectId(null, "myObject") + nav.goTo(objectNodeParentId) + + val parentId = + if (nav.isNull()) + 0L + else { + verifyClassIsObjectNode(nav.getClass()) + nav.getInstanceFieldObjectId(null, "myObject") + } + + val parentClass = + if (parentId == 0L) + null + else { + nav.goTo(parentId) + nav.getClass() + } + + nav.goTo(objectNodeObjectId) + val objectClass = nav.getClass() + + val rootClass: ClassDefinition + val rootId: Long + + if (parentId == 0L) { + rootClass = objectClass + rootId = objectNodeObjectId + } + else { + var rootObjectNodeId = objectNodeParentId + var rootObjectId: Long + var iterationCount = 0 + do { + nav.goTo(rootObjectNodeId) + verifyClassIsObjectNode(nav.getClass()) + rootObjectNodeId = nav.getInstanceFieldObjectId(null, "myParent") + rootObjectId = nav.getInstanceFieldObjectId(null, "myObject") + iterationCount++ + } + while (rootObjectNodeId != 0L && iterationCount < maxTreeDepth) + + if (iterationCount >= maxTreeDepth) { + tooDeepObjectClasses.add(objectClass) + rootId = parentId + rootClass = parentClass!! + } + else { + nav.goTo(rootObjectId) + rootId = rootObjectId + rootClass = nav.getClass() + } + } + + groupingToObjectStats + .getOrPut(Grouping(objectClass, parentClass, rootClass)) { InstanceStats() } + .registerObject(parentId, rootId) + } + + TruncatingPrintBuffer(400, 0, this::appendLine).use { buffer -> + groupingToObjectStats + .entries + .sortedByDescending { it.value.objectCount() } + .groupBy { it.key.rootClass } + .forEach { (rootClass, entries) -> + buffer.println("Root: ${rootClass.name}") + TruncatingPrintBuffer(100, 0, buffer::println).use { buffer -> + entries.forEach { (mapping, groupedObjects) -> + printDisposerTreeReportLine(buffer, mapping, groupedObjects) + } + } + buffer.println() + } + } + + if (tooDeepObjectClasses.size > 0) { + appendLine("Skipped analysis of objects too deep in disposer tree:") + tooDeepObjectClasses.forEach { + appendLine(" * ${nav.classStore.getShortPrettyNameForClass(it)}") + } + } + } catch (ex : Exception) { + appendLine(ExceptionUtil.getThrowableText(ex)) } } private fun printDisposerTreeReportLine(buffer: TruncatingPrintBuffer, - classGrouping: ClassGrouping, - instanceStats: InstanceStats) { - val (sourceClass, parentClass, rootClass) = classGrouping + mapping: Grouping, + groupedObjects: InstanceStats) { + val (sourceClass, parentClass, rootClass) = mapping val nav = analysisContext.navigator - val objectCount = instanceStats.objectCount() - val parentCount = instanceStats.parentCount() + val objectCount = groupedObjects.objectCount() + val parentCount = groupedObjects.parentCount() // Ignore 1-1 mappings if (parentClass != null && objectCount == parentCount) @@ -183,7 +408,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { } else { val parentClassName = nav.classStore.getShortPrettyNameForClass(parentClass) - val rootCount = instanceStats.rootCount() + val rootCount = groupedObjects.rootCount() if (rootClass != parentClass || rootCount != parentCount) { parentString = "<-- $parentCount $parentClassName [...] $rootCount" } @@ -199,45 +424,53 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { val disposedObjectsIDs = analysisContext.disposedObjectsIDs disposedObjectsIDs.clear() - val nav = analysisContext.navigator - val parentList = analysisContext.parentList - - if (!nav.classStore.containsClass("com.intellij.openapi.util.Disposer")) { + if (prepareException != null) { return } - nav.goToStaticField("com.intellij.openapi.util.Disposer", "ourTree") - assert(!nav.isNull()) - nav.goToInstanceField("com.intellij.openapi.util.ObjectTree", "myDisposedObjects") - nav.goToInstanceField("com.intellij.util.containers.WeakHashMap", "myMap") - nav.goToInstanceField("com.intellij.util.containers.RefHashMap\$MyMap", "keys") - val weakKeyClass = nav.classStore["com.intellij.util.containers.WeakHashMap\$WeakKey"] + try { + val nav = analysisContext.navigator + val parentList = analysisContext.parentList - nav.getReferencesCopy().forEach { - if (it == 0L) { - return@forEach - } - nav.goTo(it, ObjectNavigator.ReferenceResolution.ALL_REFERENCES) - if (nav.getClass() != weakKeyClass) { - return@forEach - } - nav.goToInstanceField("com.intellij.util.containers.WeakHashMap\$WeakKey", "referent") - if (nav.id == 0L) { - return@forEach + if (!nav.classStore.containsClass("com.intellij.openapi.util.Disposer")) { + return } - val leakId = nav.id.toInt() - if (parentList[leakId] == 0) { - // If there is no parent, then the object does not have a strong-reference path to GC root - return@forEach + nav.goToStaticField("com.intellij.openapi.util.Disposer", "ourTree") + if (nav.isNull()) { + throw ObjectNavigator.NavigationException("ourTree is null") } - disposedObjectsIDs.add(leakId) + verifyClassIsObjectTree(nav.getClass()) + nav.goToInstanceField(null, "myDisposedObjects") + nav.goToInstanceField("com.intellij.util.containers.WeakHashMap", "myMap") + nav.goToInstanceField("com.intellij.util.containers.RefHashMap\$MyMap", "key") + val weakKeyClass = nav.classStore.getClassIfExists("com.intellij.util.containers.WeakHashMap\$WeakKey") + + nav.getReferencesCopy().forEach { + if (it == 0L) { + return@forEach + } + nav.goTo(it, ObjectNavigator.ReferenceResolution.ALL_REFERENCES) + if (nav.getClass() != weakKeyClass) { + return@forEach + } + nav.goToInstanceField("com.intellij.util.containers.WeakHashMap\$WeakKey", "referent") + if (nav.id == 0L) return@forEach + + val leakId = nav.id.toInt() + if (parentList.get(leakId) == 0) { + // If there is no parent, then the object does not have a strong-reference path to GC root + return@forEach + } + disposedObjectsIDs.add(leakId) + } + } + catch (navEx: ObjectNavigator.NavigationException) { + prepareException = navEx } } - fun prepareDisposedObjectsSection(): String { - val result = StringBuilder() - + fun prepareDisposedObjectsSection(): String = buildString { val leakedInstancesByClass = HashMap() val countByClass = Object2IntOpenHashMap() var totalCount = 0 @@ -268,7 +501,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { if (disposerOptions.includeDisposedObjectsSummary) { // Print counts of disposed-but-strong-referenced objects - TruncatingPrintBuffer(100, 0, result::appendln).use { buffer -> + TruncatingPrintBuffer(100, 0, this::appendLine).use { buffer -> buffer.println("Count of disposed-but-strong-referenced objects: $totalCount") entries .sortedByDescending { it.value } @@ -278,13 +511,12 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { buffer.println(" ${entry.value} ${entry.key.prettyName}") } } - result.appendln() + appendLine() } val disposedTree = GCRootPathsTree(analysisContext, AnalysisConfig.TreeDisplayOptions.all(), null) - val iterator = disposedObjectsIDs.iterator() - while (iterator.hasNext()) { - disposedTree.registerObject(iterator.nextInt()) + for (disposedObjectsID in disposedObjectsIDs) { + disposedTree.registerObject(disposedObjectsID) } val disposedDominatorNodesByClass = disposedTree.getDisposedDominatorNodes() @@ -305,7 +537,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { } if (disposerOptions.includeDisposedObjectsSummary) { - TruncatingPrintBuffer(30, 0, result::appendln).use { buffer -> + TruncatingPrintBuffer(30, 0, this::appendLine).use { buffer -> buffer.println("Disposed-but-strong-referenced dominator object count: $allDominatorsCount") buffer.println( "Disposed-but-strong-referenced dominator sub-graph size: ${toShortStringAsSize(allDominatorsSubgraphSize)}") @@ -316,7 +548,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { " ${toPaddedShortStringAsSize(entry.size)} - ${toShortStringAsCount(entry.count)} ${entry.classDefinition.name}") } } - result.appendln() + appendLine() } if (disposerOptions.includeDisposedObjectsDetails) { @@ -325,7 +557,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { disposedDominatorClassSizeList ) - TruncatingPrintBuffer(700, 0, result::appendln).use { buffer -> + TruncatingPrintBuffer(700, 0, this::appendLine).use { buffer -> instancesListInOrder .forEach { instances -> nav.goTo(instances.getLong(0)) @@ -339,7 +571,6 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { } } } - return result.toString() } private fun getInstancesListInPriorityOrder( @@ -363,7 +594,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { // Alternate between class with most instances leaked and class with most bytes leaked // Prepare instance count class list by priority - val classOrderByInstanceCount = ArrayDeque( + val classOrderByInstanceCount = ArrayDeque( classToLeakedIdsListCopy .entries .sortedByDescending { it.value.size } @@ -371,7 +602,7 @@ internal class AnalyzeDisposer(private val analysisContext: AnalysisContext) { ) // Prepare dominator bytes count class list by priority - val classOrderByByteCount = ArrayDeque( + val classOrderByByteCount = ArrayDeque( disposedDominatorReportEntries .sortedByDescending { it.size } .map { it.classDefinition } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeGraph.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeGraph.kt index 8513a7205400..55a00f718eaa 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeGraph.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/AnalyzeGraph.kt @@ -20,25 +20,39 @@ import com.intellij.diagnostic.DiagnosticBundle import com.intellij.diagnostic.hprof.classstore.ClassDefinition import com.intellij.diagnostic.hprof.histogram.Histogram import com.intellij.diagnostic.hprof.navigator.ObjectNavigator +import com.intellij.diagnostic.hprof.util.* import com.intellij.diagnostic.hprof.util.HeapReportUtils.sectionHeader import com.intellij.diagnostic.hprof.util.HeapReportUtils.toPaddedShortStringAsCount import com.intellij.diagnostic.hprof.util.HeapReportUtils.toPaddedShortStringAsSize import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsCount import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsSize -import com.intellij.diagnostic.hprof.util.PartialProgressIndicator import com.intellij.diagnostic.hprof.visitors.HistogramVisitor +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.progress.ProgressIndicator -import it.unimi.dsi.fastutil.ints.* +import com.intellij.openapi.util.io.FileUtil +import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap +import it.unimi.dsi.fastutil.ints.IntArrayList +import it.unimi.dsi.fastutil.ints.IntOpenHashSet +import it.unimi.dsi.fastutil.ints.IntSet import it.unimi.dsi.fastutil.longs.LongArrayList +import java.io.ByteArrayOutputStream +import java.io.File +import java.io.PrintWriter +import java.util.* +import kotlin.math.max +import kotlin.math.min -fun analyzeGraph(analysisContext: AnalysisContext, progress: ProgressIndicator): String { - return AnalyzeGraph(analysisContext).analyze(progress) +fun analyzeGraph(analysisContext: AnalysisContext, listProvider: ListProvider, progress: ProgressIndicator): String { + return AnalyzeGraph(analysisContext, listProvider).analyze(progress).mainReport.toString() } -open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { +open class AnalyzeGraph(protected val analysisContext: AnalysisContext, private val listProvider: ListProvider) { + private val unreachableDisposableObjects = IntArrayList() private var strongRefHistogram: Histogram? = null private var softWeakRefHistogram: Histogram? = null + private var traverseReport: String? = null + private var dominatorFlameGraph: String? = null private val parentList = analysisContext.parentList @@ -52,60 +66,71 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { private val nominatedInstances = HashMap() - open fun analyze(progress: ProgressIndicator): String { - val sb = StringBuilder() - + open fun analyze(progress: ProgressIndicator): AnalysisReport = AnalysisReport().apply { val includePerClassSection = analysisContext.config.perClassOptions.classNames.isNotEmpty() val traverseProgress = if (includePerClassSection) PartialProgressIndicator(progress, 0.0, 0.5) else progress - traverseInstanceGraph(traverseProgress) - val analyzeDisposer = AnalyzeDisposer(analysisContext) + analyzeDisposer.prepareDisposerChildren() + + traverseInstanceGraph(traverseProgress, this) + analyzeDisposer.computeDisposedObjectsIDs() // Histogram section val histogramOptions = analysisContext.config.histogramOptions if (histogramOptions.includeByCount || histogramOptions.includeBySize) { - sb.appendLine(sectionHeader("Histogram")) - sb.append(prepareHistogramSection()) + mainReport.appendLine(sectionHeader("Histogram")) + mainReport.append(prepareHistogramSection()) + } + if (histogramOptions.includeSummary) { + mainReport.appendLine(sectionHeader("Heap summary")) + mainReport.append(traverseReport) } // Per-class section if (includePerClassSection) { val perClassProgress = PartialProgressIndicator(progress, 0.5, 0.5) - sb.appendLine(sectionHeader("Instances of each nominated class")) - sb.append(preparePerClassSection(perClassProgress)) + mainReport.appendLine(sectionHeader("Instances of each nominated class")) + mainReport.append(preparePerClassSection(perClassProgress)) } // Disposer sections if (config.disposerOptions.includeDisposerTree) { - sb.appendLine(sectionHeader("Disposer tree")) - sb.append(analyzeDisposer.prepareDisposerTreeSection()) + mainReport.appendLine(sectionHeader("Disposer tree")) + mainReport.append(analyzeDisposer.prepareDisposerTreeSection()) + } + if (config.disposerOptions.includeDisposerTreeSummary) { + mainReport.appendLine(sectionHeader("Disposer tree summary")) + mainReport.append(analyzeDisposer.prepareDisposerTreeSummarySection(config.disposerOptions.disposerTreeSummaryOptions)) } if (config.disposerOptions.includeDisposedObjectsSummary || config.disposerOptions.includeDisposedObjectsDetails) { - sb.appendLine(sectionHeader("Disposed objects")) - sb.append(analyzeDisposer.prepareDisposedObjectsSection()) + mainReport.appendLine(sectionHeader("Disposed objects")) + mainReport.append(analyzeDisposer.prepareDisposedObjectsSection()) } - return sb.toString() + // Dominator tree flame graph + if (config.dominatorTreeOptions.includeDominatorTree) { + mainReport.appendLine(sectionHeader("Dominator tree flame graph")) + mainReport.append(dominatorFlameGraph) + } } - private fun preparePerClassSection(progress: PartialProgressIndicator): String { - val sb = StringBuilder() + private fun preparePerClassSection(progress: PartialProgressIndicator) = buildString { val histogram = analysisContext.histogram val perClassOptions = analysisContext.config.perClassOptions if (perClassOptions.includeClassList) { - sb.appendLine("Nominated classes:") + appendLine("Nominated classes:") perClassOptions.classNames.forEach { name -> val (classDefinition, totalInstances, totalBytes) = histogram.entries.find { entry -> entry.classDefinition.name == name } ?: return@forEach val prettyName = classDefinition.prettyName - sb.appendLine(" --> [${toShortStringAsCount(totalInstances)}/${toShortStringAsSize(totalBytes)}] " + prettyName) + appendLine(" --> [${toShortStringAsCount(totalInstances)}/${toShortStringAsSize(totalBytes)}] " + prettyName) } - sb.appendLine() + appendLine() } val nav = analysisContext.navigator @@ -118,22 +143,20 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { progress.fraction = counter.toDouble() / nominatedInstances.size progress.text2 = DiagnosticBundle.message("hprof.analysis.progress", set.size, classDefinition.prettyName) stopwatch.reset().start() - sb.appendLine("CLASS: ${classDefinition.prettyName} (${set.size} objects)") + appendLine("CLASS: ${classDefinition.prettyName} (${set.size} objects)") val referenceRegistry = GCRootPathsTree(analysisContext, perClassOptions.treeDisplayOptions, classDefinition) set.forEach { objectId -> referenceRegistry.registerObject(objectId) } set.clear() - sb.append(referenceRegistry.printTree()) + append(referenceRegistry.printTree()) if (config.metaInfoOptions.include) { - sb.appendLine("Report for ${classDefinition.prettyName} created in $stopwatch") + appendLine("Report for ${classDefinition.prettyName} created in $stopwatch") } - sb.appendLine() + appendLine() counter++ } progress.fraction = 1.0 - - return sb.toString() } private fun prepareHistogramSection(): String { @@ -158,6 +181,7 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { enum class WalkGraphPhase { StrongReferencesNonLocalVariables, StrongReferencesLocalVariables, + DisposerTree, SoftReferences, WeakReferences, CleanerFinalizerReferences, @@ -166,8 +190,11 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { private val config = analysisContext.config - protected fun traverseInstanceGraph(progress: ProgressIndicator): String { - val result = StringBuilder() + protected fun traverseInstanceGraph(progress: ProgressIndicator, report: AnalysisReport) { + val traverseOptions = config.traverseOptions + val onlyStrongReferences = traverseOptions.onlyStrongReferences + val includeDisposerRelationships = traverseOptions.includeDisposerRelationships + val includeFieldInformation = traverseOptions.includeFieldInformation val nav = analysisContext.navigator val classStore = analysisContext.classStore @@ -180,7 +207,7 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { val nominatedClassNames = config.perClassOptions.classNames nominatedClassNames.forEach { - nominatedInstances.put(classStore.get(it), IntOpenHashSet()) + nominatedInstances[classStore[it]] = IntOpenHashSet() } progress.text2 = DiagnosticBundle.message("analyze.graph.progress.details.collect.roots") @@ -217,12 +244,8 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { } toVisit.addAll(rootsSet) - rootsSet.clear() - rootsSet.trim() var leafCounter = 0 - result.appendLine("Roots count: ${toVisit.size}") - result.appendLine("Classes count: ${classStore.size()}") progress.text2 = DiagnosticBundle.message("analyze.graph.progress.details.traversing.instance.graph") @@ -238,6 +261,7 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { var visitedCount = 0 var strongRefVisitedCount = 0 var softWeakVisitedCount = 0 + var edgeCount = 0 var finalizableBytes = 0L var softBytes = 0L @@ -248,11 +272,18 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { val cleanerObjects = IntArrayList() val sunMiscCleanerClass = classStore.getClassIfExists("sun.misc.Cleaner") val finalizerClass = classStore.getClassIfExists("java.lang.ref.Finalizer") - val onlyStrongReferences = config.traverseOptions.onlyStrongReferences while (!toVisit.isEmpty) { for (i in 0 until toVisit.size) { - val id = toVisit.getInt(i) + val id = toVisit[i] + + // Disposer.ourTree is only visited during DisposerTree phase to give opportunity for + if (includeDisposerRelationships && + id == analysisContext.disposerTreeObjectId && + phase < WalkGraphPhase.DisposerTree) { + continue + } + nav.goTo(id.toLong(), ObjectNavigator.ReferenceResolution.ALL_REFERENCES) val currentObjectClass = nav.getClass() @@ -272,41 +303,64 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { nav.copyReferencesTo(references) val currentObjectIsArray = currentObjectClass.isArray() + // Postpone any soft references encountered before the phase that handles them if (phase < WalkGraphPhase.SoftReferences && nav.getSoftReferenceId() != 0L) { - // Postpone soft references if (!onlyStrongReferences) { softReferenceIdToParentMap.put(nav.getSoftReferenceId().toInt(), id) } references[nav.getSoftWeakReferenceIndex()] = 0L } + // Postpone any weak references encountered before the phase that handles them if (phase < WalkGraphPhase.WeakReferences && nav.getWeakReferenceId() != 0L) { - // Postpone weak references if (!onlyStrongReferences) { weakReferenceIdToParentMap.put(nav.getWeakReferenceId().toInt(), id) } references[nav.getSoftWeakReferenceIndex()] = 0L } + val size = nav.getObjectSize() + val nonDisposerReferences = references.size + + // Inline children from the disposer tree + if (includeDisposerRelationships && analysisContext.disposerParentToChildren.contains(id)) { + if (phase >= WalkGraphPhase.DisposerTree) { + unreachableDisposableObjects.add(id) + } + analysisContext.disposerParentToChildren[id].forEach { + references.add(it.toLong()) + } + } + for (j in 0 until references.size) { val referenceId = references.getLong(j).toInt() - + if (referenceId != 0) edgeCount++ if (addIdToListAndSetParentIfOrphan(toVisit2, referenceId, id)) { - if (!currentObjectIsArray && j <= 254) { - refIndexList[referenceId] = j + 1 + if (includeFieldInformation) { + refIndexList.set(referenceId, when { + currentObjectIsArray -> RefIndexUtil.ARRAY_ELEMENT + j >= nonDisposerReferences -> RefIndexUtil.DISPOSER_CHILD + j < RefIndexUtil.MAX_FIELD_INDEX -> j + 1 + else -> RefIndexUtil.FIELD_OMITTED // Too many reference fields + }) } isLeaf = false } } + // Ordered list of visited nodes. Parent is always before its children. visitedList[visitedCount++] = id - val size = nav.getObjectSize() + + // Store size of the object. Later pass will update the size by adding sizes of children + // Size in DWORDs to support graph sizes up to 10GB. var sizeDivBy4 = (size + 3) / 4 if (sizeDivBy4 == 0) sizeDivBy4 = 1 - sizesList[id] = sizeDivBy4 + sizesList.set(id, sizeDivBy4) + // Update histogram (separately for Strong-references and other reachable objects) var histogramEntries: HashMap - if (phase == WalkGraphPhase.StrongReferencesNonLocalVariables || phase == WalkGraphPhase.StrongReferencesLocalVariables) { + if (phase == WalkGraphPhase.StrongReferencesNonLocalVariables || phase == WalkGraphPhase.StrongReferencesLocalVariables || + phase == WalkGraphPhase.DisposerTree) { histogramEntries = strongRefHistogramEntries if (isLeaf) { leafCounter++ @@ -316,12 +370,8 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { else { histogramEntries = reachableNonStrongHistogramEntries when (phase) { - WalkGraphPhase.CleanerFinalizerReferences -> { - finalizableBytes += size - } - WalkGraphPhase.SoftReferences -> { - softBytes += size - } + WalkGraphPhase.CleanerFinalizerReferences -> finalizableBytes += size + WalkGraphPhase.SoftReferences -> softBytes += size else -> { assert(phase == WalkGraphPhase.WeakReferences) weakBytes += size @@ -333,13 +383,17 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { HistogramVisitor.InternalHistogramEntry(currentObjectClass) }.addInstance(size.toLong()) } + + // Update process progress.fraction = (1.0 * visitedInstancesCount / nav.instanceCount) + + // Prepare next level of objects for processing toVisit.clear() val tmp = toVisit toVisit = toVisit2 toVisit2 = tmp - // Handle state transitions + // If no more object to visit at this phase, transition to the next while (toVisit.size == 0 && phase != WalkGraphPhase.Finished) { // Next state phase = WalkGraphPhase.values()[phase.ordinal + 1] @@ -348,39 +402,73 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { WalkGraphPhase.StrongReferencesLocalVariables -> frameRootsSet.forEach { id -> addIdToListAndSetParentIfOrphan(toVisit, id, id) + true } WalkGraphPhase.CleanerFinalizerReferences -> { toVisit.addAll(cleanerObjects) cleanerObjects.clear() } WalkGraphPhase.SoftReferences -> { - for (entry in softReferenceIdToParentMap.int2IntEntrySet().fastIterator()) { - addIdToListAndSetParentIfOrphan(toVisit, entry.intKey, entry.intValue) + for (entry in softReferenceIdToParentMap.int2IntEntrySet()) { + val softId = entry.intKey + val parentId = entry.intValue + if (addIdToListAndSetParentIfOrphan(toVisit, softId, parentId)) { + refIndexList[softId] = RefIndexUtil.SOFT_REFERENCE + } } // No need to store the list anymore softReferenceIdToParentMap.clear() softReferenceIdToParentMap.trim() } WalkGraphPhase.WeakReferences -> { - for (entry in weakReferenceIdToParentMap.int2IntEntrySet().fastIterator()) { - addIdToListAndSetParentIfOrphan(toVisit, entry.intKey, entry.intValue) + weakReferenceIdToParentMap.int2IntEntrySet().forEach { + val weakId = it.intKey + val parentId = it.intValue + if (addIdToListAndSetParentIfOrphan(toVisit, weakId, parentId)) { + refIndexList[weakId] = RefIndexUtil.WEAK_REFERENCE + } } // No need to store the list anymore weakReferenceIdToParentMap.clear() weakReferenceIdToParentMap.trim() } + WalkGraphPhase.DisposerTree -> { + if (analysisContext.disposerTreeObjectId != 0) { + toVisit.add(analysisContext.disposerTreeObjectId) + } + } else -> Unit // No work for other state transitions } } } + + if (config.dominatorTreeOptions.includeDominatorTree) { + val usableDiskSpace = File(FileUtil.getTempDirectory()).usableSpace + if (usableDiskSpace - estimateDominatorTempFilesSize(visitedCount, edgeCount) > config.dominatorTreeOptions.diskSpaceThreshold) { + try { + rootsSet.addAll(frameRootsSet) + computeDominatorFlameGraph(nav, rootsSet, sizesList, edgeCount, report) + } + catch (e: Exception) { + val baos = ByteArrayOutputStream() + val pw = PrintWriter(baos) + e.printStackTrace(pw) + pw.flush() + dominatorFlameGraph = baos.toString() + } + } + else { + dominatorFlameGraph = "Omitted due to low disk space" + } + } + rootsSet.clear() + + // Assert that any postponed objects have been handled assert(cleanerObjects.isEmpty) assert(softReferenceIdToParentMap.isEmpty()) assert(weakReferenceIdToParentMap.isEmpty()) - result.appendLine("Finalizable size: ${toShortStringAsSize(finalizableBytes)}") - result.appendLine("Soft-reachable size: ${toShortStringAsSize(softBytes)}") - result.appendLine("Weak-reachable size: ${toShortStringAsSize(weakBytes)}") - + // Histograms are accessible publicly after traversal is complete strongRefHistogram = Histogram( strongRefHistogramEntries .values @@ -395,8 +483,11 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { .sortedByDescending { it.totalInstances }, softWeakVisitedCount.toLong()) + // Update size field in non-leaves to reflect the size of the whole subtree. Right after traversal + // the size field is initialized to the size of the given object. + // Traverses objects in the reverse order, so a child is always visited before its parent. + // This assures size field is correctly set for a given before its added to the size field of the parent. val stopwatchUpdateSizes = Stopwatch.createStarted() - // Update sizes for non-leaves var index = visitedCount - 1 while (index >= 0) { val id = visitedList[index] @@ -408,12 +499,470 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { } stopwatchUpdateSizes.stop() - if (config.metaInfoOptions.include) { - result.appendLine("Analysis completed! Visited instances: $visitedInstancesCount, time: $stopwatch") - result.appendLine("Update sizes time: $stopwatchUpdateSizes") - result.appendLine("Leaves found: $leafCounter") + traverseReport = buildString { + if (config.metaInfoOptions.include) { + appendLine("Analysis completed! Visited instances: $visitedInstancesCount, time: $stopwatch") + appendLine("Update sizes time: $stopwatchUpdateSizes") + appendLine("Leaves found: $leafCounter") + } + + appendLine("Class count: ${classStore.size()}") + + // Adds summary of object count by reachability + appendLine("Finalizable size: ${toShortStringAsSize(finalizableBytes)}") + appendLine("Soft-reachable size: ${toShortStringAsSize(softBytes)}") + appendLine("Weak-reachable size: ${toShortStringAsSize(weakBytes)}") + appendLine("Reachable only from disposer tree: ${unreachableDisposableObjects.size}") + TruncatingPrintBuffer(10, 0, this::appendLine).use { buffer -> + val unreachableChildren = IntOpenHashSet() + unreachableDisposableObjects.forEach { id -> + analysisContext.disposerParentToChildren[id]?.let { unreachableChildren.addAll(it) } + } + unreachableDisposableObjects.forEach { id -> + if (unreachableChildren.contains(id)) { + return@forEach + } + buffer.println(" * ${nav.getClassForObjectId(id.toLong()).name} (${toShortStringAsSize(sizesList.get(id).toLong() * 4)})") + } + } + } + } + + private fun estimateDominatorTempFilesSize(objectCount: Int, edgeCount: Int): Long { + return 20L * objectCount + 10L * edgeCount + } + + private fun computeDominatorFlameGraph(nav: ObjectNavigator, rootsSet: IntSet, sizesList: IntList, edgeCount: Int, report: AnalysisReport) { + val totalStopwatch = Stopwatch.createUnstarted() + val postorderStopwatch = Stopwatch.createUnstarted() + val incomingEdgesStopwatch = Stopwatch.createUnstarted() + val sortIncomingEdgesStopwatch = Stopwatch.createUnstarted() + val dominatorsStopwatch = Stopwatch.createUnstarted() + val retainedSizesStopwatch = Stopwatch.createUnstarted() + val flameGraphStopwatch = Stopwatch.createUnstarted() + + totalStopwatch.start() + postorderStopwatch.start() + val objectCount = nav.instanceCount.toInt() + // this is slightly oversized; it only needs to be large enough to contain all strongly-referenced objects + val postorderList = listProvider.createIntList("postorderList", (objectCount + 2).toLong()) + val postorderNumbers = listProvider.createIntList("postorderNumbers", (objectCount + 2).toLong()) + + // compute postorder numbers + val nodeStack = listProvider.createIntList("dominatorBuf1", (objectCount+2).toLong()) + val childrenStack = listProvider.createIntList("childStack", (edgeCount + rootsSet.size).toLong()) + val childrenStackOffsets = listProvider.createIntList("dominatorBuf2", (objectCount + 2).toLong()) + val childrenStackSizes = listProvider.createIntList("dominatorBuf3", (objectCount + 2).toLong()) + var csEntries = 0 + var poEdgeCount = rootsSet.size + for (id in rootsSet) { + childrenStack[csEntries++] = id + } + + childrenStackSizes[0] = csEntries + childrenStackOffsets[0] = 0 + childrenStackOffsets[1] = csEntries + + var nsSize = 0 + var csSize = 1 + var maxPonum = 1 + var maxStackDepth = 0 + val refList = LongArrayList() + while (csSize != 0) { + if (childrenStackSizes[csSize-1] > 0) { + val child = childrenStack[childrenStackOffsets[csSize-1] + childrenStackSizes[csSize-1] - 1] + childrenStackSizes[csSize-1]-- + if (postorderNumbers[child] == 0) { + postorderNumbers[child] = -1 + nodeStack[nsSize++] = child + nav.goTo(child.toLong()) + nav.copyReferencesTo(refList) + var refsAdded = 0 + for (i in 0 until refList.size) { + if (refList[i] != 0L) { + childrenStack[csEntries++] = refList[i].toInt() + refsAdded++ + poEdgeCount++ + } + } + childrenStackSizes[csSize] = refsAdded + childrenStackOffsets[csSize+1] = childrenStackOffsets[csSize] + refsAdded + csSize++ + maxStackDepth = max(csSize, maxStackDepth) + } + } else { + csSize-- + if (csSize == 0) break + csEntries = childrenStackOffsets[csSize] + if (nsSize != 0) { + val n = nodeStack[nsSize - 1] + postorderList[maxPonum] = n + postorderNumbers[n] = maxPonum++ + nsSize-- + } + } + } + val rootPonum = maxPonum + postorderNumbers[objectCount+1] = rootPonum + postorderStopwatch.stop() + + incomingEdgesStopwatch.start() + /* To accelerate the iterative dominance calculation, we can take advantage of the fact that an object's idom can only change + * if at least one of its successors idoms have changed since the last time it was computed. After the first couple iterations, + * most idoms stay the same, so much time is wasted on recomputing idoms that are guaranteed not to change. + * + * Drawing inspiration from garbage collector card tables, we keep a bitmap that records which objects need to be updated. Each + * bit corresponds to a range of postorder numbers (probably 128 or 256), to keep the card table small and rapidly scannable. If + * that bit is set, every object in that range will have its idom recomputed. This is roughly 5x faster than the simple approach. + */ + + // cards represent as small of a power-of-2 sized range as possible while ensuring that card indices can fit in a short + val cardBits = if (maxPonum < 65536) 0 else (Math.log(maxPonum / 65536.0) / Math.log(2.0) + 1).toInt() + val cardSize = 1 shl cardBits + val ncards = (maxPonum + cardSize - 1) / cardSize + val ncardChunks = (ncards + 63) / 64 + val dirtyCards = LongArray(ncardChunks) + dirtyCards.fill(-1) // initially everything needs to have its idom computed + // outgoingCardRefs contains, for each object p, a list of which cards must be marked dirty when p's idom changes, i.e., the cards + // containing the successors of p. These lists can contain duplicates if some of the successors are in the same card, but removing + // them is significantly more costly than just performing the redundant card updates. + val outgoingCardRefs = listProvider.createUShortList("cardRefs", poEdgeCount.toLong()) + // outgoingCardListOffsets[p] is the index in outgoingCardRefs where the list for object 'p' begins + val outgoingCardListOffsets = nodeStack + outgoingCardListOffsets.clear(maxPonum+1) + + val edgeListOffsets = childrenStackOffsets + edgeListOffsets.clear(maxPonum+1) + + // first count the number of incoming edges for each object and fill the card lists + val references = LongArrayList() + var ncardrefs = 0 + for (i in 1 until maxPonum) { + val id = postorderList[i] + nav.goTo(id.toLong()) + nav.copyReferencesTo(references) + if (rootsSet.contains(id)) { + edgeListOffsets[i]++ + } + outgoingCardListOffsets[i] = ncardrefs + for (j in 0 until references.size) { + if (references[j] != 0L) { + val target = postorderNumbers[references[j].toInt()] + edgeListOffsets[target]++ + outgoingCardRefs[ncardrefs++] = target shr cardBits + } + } + } + outgoingCardListOffsets[maxPonum] = ncardrefs + // compute the partial sums of the incoming edge counts, in place + var next: Int + var psum = edgeListOffsets[0] + for (i in 0 until maxPonum) { + next = edgeListOffsets[i + 1] + edgeListOffsets[i + 1] = psum + psum += next + } + edgeListOffsets[0] = 0 + + // concatenated incoming edge lists for each object, in postorder traversal order; + // edgeListOffsets[p] gives the starting index for the list for the object with postorder number p + val incomingEdges: IntList + if (poEdgeCount < edgeCount + rootsSet.size) { + // if childrenStack is big enough, reuse it + incomingEdges = childrenStack + incomingEdges.clear(poEdgeCount) + } else { + incomingEdges = listProvider.createIntList("incoming", poEdgeCount.toLong()) + } + // stores the number of edges added to each incoming edge list so far + val edgeListIndices = childrenStackSizes + edgeListIndices.clear(maxPonum+1) + + fun getEdge(ponum: Int, index: Int) = incomingEdges[edgeListOffsets[ponum] + index] + + fun addEdge(ponum: Int, parent: Int) { + val nextFreeSlot = edgeListOffsets[ponum] + edgeListIndices[ponum] + incomingEdges[nextFreeSlot] = parent + edgeListIndices[ponum]++ + } + + fun numIncomingEdges(ponum: Int) = edgeListOffsets[ponum + 1] - edgeListOffsets[ponum] + + // now that the incoming edges have been counted and the offsets determined, fill in the lists + for (i in 1 until maxPonum) { + val id = postorderList[i] + nav.goTo(id.toLong()) + nav.copyReferencesTo(references) + if (rootsSet.contains(id)) { + addEdge(i, rootPonum) + } + for (j in 0 until references.size) { + if (references[j] != 0L) { + val target = postorderNumbers[references[j].toInt()] + addEdge(target, i) + } + } + } + incomingEdgesStopwatch.stop() + sortIncomingEdgesStopwatch.start() + for (i in 0 until maxPonum-1) { + val size = edgeListOffsets[i+1] - edgeListOffsets[i] + if (size <= 1) continue + val arr = IntArray(size) + for (j in 0 until size) { + arr[j] = incomingEdges[edgeListOffsets[i] + j] + } + Arrays.sort(arr) + for (j in 0 until size) { + incomingEdges[edgeListOffsets[i] + j] = arr[j] + } + } + sortIncomingEdgesStopwatch.stop() + + /* Compute DOM sets by iteratively applying this recurrence until a fixed point is reached: + * DOM(n) = intersection(DOM(p_1), DOM(p_2), ..., DOM(p_k)) + * where p_i is the i'th predecessor of n, and initially DOM(ROOT) = {ROOT}, and for n != ROOT, DOM(n) is the entire node set. + * DOM(n) can be represented more compactly by only storing the immediate dominator for each node, which forms a tree with idoms + * as the parent pointers. The DOM set for a node n consists of all of the nodes in the path from n up to the root. + * This iteration is most efficient when done in reverse-postorder (if the graph is reducible in the sense of flow-graph reducibility, + * it is guaranteed to terminate in 2 iterations. Unfortunately heaps tend not to be reducible, and while it can take hundreds of + * iterations to quiesce completely, very few idoms are changed after the first couple dozen) + */ + dominatorsStopwatch.start() + val idomList = edgeListIndices // edgeListIndices is no longer needed, so we can reuse this buffer for the idoms and save some space + idomList.clear(maxPonum+1) + idomList[rootPonum] = rootPonum + + /* Find the intersection of the DOM sets for nodes a and b. This will be the common prefix of the paths from the root to a and b, + * so will be represented by the postorder number for the nearest common ancestor of a and b. Since idom(n) > n, the NCA can be + * found efficiently by walking up the tree from a and b, at each step moving only the one with the smaller postorder number, + * until either the two are equal or the root is reached. + */ + var intersectCalls = 0 + fun intersect(a: Int, b: Int): Int { + intersectCalls++ + var i = a + var j = b + while (i != j) { + while (i < j) { + if (i == 0) return j + i = idomList[i] + } + while (j < i) { + if (j == 0) return i + j = idomList[j] + } + } + return i + } + + // compute the intersection of the idoms of the predecessors of object i; return true if the idom for i changed. + var rootSkipIntersectCalls = 0 + fun updateIdom(i: Int): Boolean { + val numIncoming = numIncomingEdges(i) + var newIdom = getEdge(i, numIncoming - 1) + var j = numIncoming - 2 + while (j >= 0) { + val parent = getEdge(i, j) + if (parent == 0) break + val intersection = intersect(newIdom, parent) + if (intersection != 0) { + newIdom = intersection + } + if (newIdom == rootPonum) { + rootSkipIntersectCalls += j + break + } + j-- + } + if (newIdom != idomList[i]) { + idomList[i] = newIdom + return true + } + return false + } + + fun markCard(cardNumber: Int, value: Boolean) { + val chunk = cardNumber shr 6 + val card = cardNumber and 0x3F + if (value) { + dirtyCards[chunk] = dirtyCards[chunk] or (1L shl card) + } else { + dirtyCards[chunk] = dirtyCards[chunk] and (1L shl card).inv() + } + } + + // scan through the card table in reverse order, recomputing idoms for any dirty cards. Do this repeatedly until either a fixed point + // or the iteration cap is reached + var nchanged = 1 + var iter = 0 + var idomUpdates = 0 + var prevIntersectCalls = 0 + var updateCallsSavedByCardTable = 0L + while (nchanged != 0 && iter < config.dominatorTreeOptions.maxDominatorIterations) { + val iterationStopwatch = Stopwatch.createStarted() + var nupdates = 0 + nchanged = 0 + var chunkIndex = ncardChunks - 1 + while (chunkIndex >= 0) { + val chunk = dirtyCards[chunkIndex] + if (chunk == 0L) { // quickly skip chunks with no set bits - this allows skipping thousands of objects at a time + updateCallsSavedByCardTable += cardSize * 64 + chunkIndex-- + continue + } + var card = 63 + while (card >= 0) { + if ((chunk and (1L shl card)) != 0L) { + val basePonum = cardSize * (chunkIndex * 64 + card) + var i = cardSize - 1 + markCard(chunkIndex * 64 + card, false) // we are about to recompute everything in this card. mark it clean + while (i >= 0) { + val ponum = basePonum + i + if (ponum == 0) break + if (ponum >= rootPonum) { + i-- + continue + } + if (idomList[ponum] == rootPonum) { // if the idom is already the root, it can't change any more - no need to recompute + i-- + continue + } + + idomUpdates++ + nupdates++ + if (updateIdom(ponum)) { // idom changed - need to mark successor cards dirty + var chidx = outgoingCardListOffsets[ponum] + while (chidx < outgoingCardListOffsets[ponum+1]) { + val targetCard = outgoingCardRefs[chidx] + markCard(targetCard, true) + chidx++ + } + nchanged++ + } + i-- + } + } else { + updateCallsSavedByCardTable += cardSize + } + card-- + } + chunkIndex-- + } + LOG.debug("iteration $iter recomputed $nupdates and changed $nchanged idoms in $iterationStopwatch; called intersect() ${intersectCalls - prevIntersectCalls} times") + prevIntersectCalls = intersectCalls + iter++ + } + dominatorsStopwatch.stop() + + retainedSizesStopwatch.start() + val retainedSizes = outgoingCardListOffsets // reuse this buffer, it is no longer needed + for (i in 1 until maxPonum) { + retainedSizes[i] = sizesList[postorderList[i]] + } + for (i in 1 until maxPonum) { + retainedSizes[idomList[i]] += retainedSizes[i] + } + retainedSizesStopwatch.stop() + + flameGraphStopwatch.start() + val idomTreeChildren = mutableMapOf>() + for (i in 1 until maxPonum) { + if (retainedSizes[i] * 4L >= config.dominatorTreeOptions.minNodeSize) { + idomTreeChildren.computeIfAbsent(idomList[i]) { mutableListOf() }.add(i) + } + } + + fun signatureFor(ponum: Int): String { + return if (ponum == rootPonum) "root" else nav.getClassForObjectId(postorderList[ponum].toLong()).name.dropLastWhile { it == ';' } + } + + /* Produce a flame graph of the idom tree in a relatively compact format that can be easily translated + * to async-profiler format. The tree is truncated where the retained size of a node falls below minNodeSize, + * or if the depth gets above maxDepth (very long chains can be created with linked lists, for example). + * + * The format is as follows (all numbers are written out as text): + * Line 1: number N of strings in string pool + * : one line per string in the string pool + * 1 line per node, with 3 space-separated integer fields: + * - index of node name in the string pool + * - retained size of this node + * - number of child nodes + */ + + val stringToIndex = mutableMapOf() + val indexToString = mutableListOf() + + fun addStringToPool(s: String): Int { + if (!stringToIndex.contains(s)) { + stringToIndex[s] = stringToIndex.size + indexToString.add(s) + } + return stringToIndex[s]!! + } + + var renderedNodes = 0 + fun StringBuilder.dumpCompressedFlameGraph(poNumber: Int, depth: Int = 0) { + val signatureIndex = addStringToPool(signatureFor(poNumber)) + val children = idomTreeChildren[poNumber] + if (depth < config.dominatorTreeOptions.maxDepth && children != null) { + val childrenSize = children.sumBy { p -> retainedSizes[p] } + appendLine("$signatureIndex ${retainedSizes[poNumber] - childrenSize} ${children.size}") + renderedNodes++ + children.sortedByDescending { p -> retainedSizes[p] }.forEach { p -> + if (renderedNodes >= config.dominatorTreeOptions.headLimit) return@forEach + dumpCompressedFlameGraph(p, depth + 1) + } + } else { + appendLine("$signatureIndex ${retainedSizes[poNumber]} 0") + renderedNodes++ + } + } + + val sb = StringBuilder() + sb.dumpCompressedFlameGraph(rootPonum) + sb.insert(0, buildString { + appendLine(indexToString.size) + indexToString.forEach { + appendLine(it) + } + }) + dominatorFlameGraph = sb.toString() + + flameGraphStopwatch.stop() + totalStopwatch.stop() + + fun Double.round(): String { + val s = toString() + if (!s.contains('.')) return s + return s.substring(0, min(s.indexOf(".")+3, s.length)) + } + + report.metaInfo.apply { + appendLine("Dominator phase total time: $totalStopwatch") + appendLine(" Compute postorder numbers: $postorderStopwatch") + appendLine(" edgeCount = $edgeCount, poEdgeCount = $poEdgeCount, rootsSet size = ${rootsSet.size}, maxPonum = $maxPonum; max stack depth = $maxStackDepth") + appendLine(" Compute incoming edges + card refs: $incomingEdgesStopwatch") + appendLine(" Sort incoming edges: $sortIncomingEdgesStopwatch") + appendLine(" Dominator computation: $dominatorsStopwatch") + appendLine(" $iter iterations") + appendLine( + " $idomUpdates idom updates (${(idomUpdates.toDouble() / maxPonum).round()}x per node); $intersectCalls calls to intersect (${(intersectCalls.toDouble() / idomUpdates).round()} per idomUpdate)") + appendLine(" card table is $ncards bits x $cardSize obj/bit, saved $updateCallsSavedByCardTable idom updates") + appendLine(" aborting updateIdom when root is hit saved $rootSkipIntersectCalls intersect calls") + appendLine(" Compute retained sizes: $retainedSizesStopwatch") + appendLine(" Emit flame graph: $flameGraphStopwatch") + appendLine(" retained size cutoff: ${config.dominatorTreeOptions.minNodeSize}") + appendLine(" depth cutoff: ${config.dominatorTreeOptions.maxDepth}") + appendLine( + " pruned tree contains $renderedNodes nodes ${if (renderedNodes > config.dominatorTreeOptions.headLimit) "(truncated to ${config.dominatorTreeOptions.headLimit})" else ""}") + } + } + + private fun IntList.clear(size: Int) { + for (i in 0 until size) { + this[i] = 0 } - return result.toString() } /** @@ -424,7 +973,7 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { * * @return true if object was added to the list. */ - private fun addIdToListAndSetParentIfOrphan(list: IntList, id: Int, parentId: Int = id): Boolean { + private fun addIdToListAndSetParentIfOrphan(list: IntArrayList, id: Int, parentId: Int = id): Boolean { if (id != 0 && getParentIdForObjectId(id.toLong()) == 0L) { setParentForObjectId(id.toLong(), parentId.toLong()) list.add(id) @@ -461,5 +1010,7 @@ open class AnalyzeGraph(protected val analysisContext: AnalysisContext) { return result ?: throw IllegalStateException("Graph not analyzed.") } - + companion object { + private val LOG = Logger.getInstance(AnalyzeGraph::class.java) + } } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/ClassNomination.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/ClassNomination.kt index 2ccfd050baee..66aa32a1519b 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/ClassNomination.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/ClassNomination.kt @@ -18,7 +18,7 @@ package com.intellij.diagnostic.hprof.analysis import com.intellij.diagnostic.hprof.histogram.Histogram import com.intellij.diagnostic.hprof.histogram.HistogramEntry -internal class ClassNomination(private val histogram: Histogram, +class ClassNomination(private val histogram: Histogram, private val classLimitPerCategory: Int) { fun nominateClasses(): List { val resultClasses = HashSet() diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/GCRootPathsTree.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/GCRootPathsTree.kt index 71de7dbd54f3..7c2a0e2127d3 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/GCRootPathsTree.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/GCRootPathsTree.kt @@ -22,6 +22,7 @@ import com.intellij.diagnostic.hprof.util.HeapReportUtils.STRING_PADDING_FOR_COU import com.intellij.diagnostic.hprof.util.HeapReportUtils.STRING_PADDING_FOR_SIZE import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsCount import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsSize +import com.intellij.diagnostic.hprof.util.RefIndexUtil import com.intellij.diagnostic.hprof.util.TruncatingPrintBuffer import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap import it.unimi.dsi.fastutil.ints.IntArrayList @@ -39,6 +40,30 @@ internal class GCRootPathsTree( // If all objects are of the same class and not arrays then instance size can be computed only once. private val objectSizeStrategy = ObjectSizeCalculationStrategy.getBestStrategyForClass(allObjectsOfClass) + private enum class Status { + None, + Warning, + LastInPath; + + companion object { + fun getStatus(refIndex: Int, lastInPath: Boolean, disposed: Boolean): Status = when { + lastInPath -> LastInPath + disposed -> Warning + refIndex == RefIndexUtil.SOFT_REFERENCE -> Warning + refIndex == RefIndexUtil.WEAK_REFERENCE -> Warning + else -> None + } + } + + override fun toString(): String = getStatusCharacter().toString() + + fun getStatusCharacter(): Char = when (this) { + None -> ' ' + Warning -> '!' + LastInPath -> '*' + } + } + interface ObjectSizeCalculationStrategy { fun calculateObjectSize(nav: ObjectNavigator, id: Int): Int @@ -93,25 +118,24 @@ internal class GCRootPathsTree( val gcPath = IntArrayList() val fieldsPath = IntArrayList() + val sizesPath = IntArrayList() var objectIterationId = objectId var parentId = parentMapping[objectIterationId] var count = 0 - fieldsPath.add(0) val maxTreeDepth = treeDisplayOptions.maximumTreeDepth while (count < maxTreeDepth && parentId != objectIterationId) { gcPath.add(objectIterationId) - if (treeDisplayOptions.showFieldNames) { - fieldsPath.add(refIndexMapping[objectIterationId]) - } - else { - fieldsPath.add(0) - } + fieldsPath.add(refIndexMapping[objectIterationId]) + sizesPath.add(sizesMapping[objectIterationId]) objectIterationId = parentId parentId = parentMapping[objectIterationId] count++ } + // No field for a root node + fieldsPath.add(RefIndexUtil.ROOT) + if (parentId != objectIterationId) { // Object ignored as its GC-root path is too long countOfIgnoredObjects++ @@ -119,26 +143,16 @@ internal class GCRootPathsTree( } gcPath.add(objectIterationId) + sizesPath.add(sizesMapping[objectIterationId]) assert(gcPath.size == fieldsPath.size) val size = objectSizeStrategy.calculateObjectSize(nav, objectId) - var currentNode: Node = topNode for (i in gcPath.size - 1 downTo 0) { val id = gcPath.getInt(i) - var classDefinition = nav.getClassForObjectId(id.toLong()) - var fieldName: String? = null - if (fieldsPath.getInt(i) != 0) { - if (classDefinition.name == "java.lang.Class") { - classDefinition = nav.classStore[id.toLong()] - fieldName = classDefinition.getClassFieldName(fieldsPath.getInt(i) - 1) - } - else { - fieldName = classDefinition.getRefField(nav.classStore, fieldsPath.getInt(i) - 1).name - } - } - currentNode = currentNode.addEdge(id, size, sizesMapping[id], classDefinition, fieldName, disposedObjectsIDsSet.contains(id)) + val classDefinition = nav.getClassForObjectId(id.toLong()) + currentNode = currentNode.addEdge(id, size, sizesPath.getInt(i), classDefinition, fieldsPath.getInt(i).toByte(), disposedObjectsIDsSet.contains(id)) } } @@ -165,11 +179,11 @@ internal class GCRootPathsTree( objectSize: Int, subgraphSizeInDwords: Int, classDefinition: ClassDefinition, - fieldName: String?, + refIndex: Byte, disposed: Boolean): Node } - data class Edge(val classDefinition: ClassDefinition, val fieldName: String?, val disposed: Boolean) + data class Edge(val classDefinition: ClassDefinition, val refIndex: Byte, val disposed: Boolean) class RegularNode : Node { @@ -184,14 +198,14 @@ internal class GCRootPathsTree( objectSize: Int, subgraphSizeInDwords: Int, classDefinition: ClassDefinition, - fieldName: String?, + refIndex: Byte, disposed: Boolean): Node { var localEdges = edges if (localEdges == null) { localEdges = HashMap(1) edges = localEdges } - val node = localEdges.getOrPut(Edge(classDefinition, fieldName, disposed)) { RegularNode() } + val node = localEdges.getOrPut(Edge(classDefinition, refIndex, disposed)) { RegularNode() } node.pathsCount++ if (node.pathsSize + objectSize.toLong() > Int.MAX_VALUE) { node.pathsSize = Int.MAX_VALUE @@ -237,7 +251,7 @@ internal class GCRootPathsTree( objectSize: Int, subgraphSizeInDwords: Int, classDefinition: ClassDefinition, - fieldName: String?, + refIndex: Byte, disposed: Boolean): Node { val nullableNode = edges.get(objectId)?.first val node: RegularNode @@ -247,7 +261,7 @@ internal class GCRootPathsTree( } else { val newNode = RegularNode() - val pair = Pair(newNode, Edge(classDefinition, fieldName, disposed)) + val pair = Pair(newNode, Edge(classDefinition, refIndex, disposed)) newNode.instances.add(objectId) edges.put(objectId, pair) node = newNode @@ -273,47 +287,13 @@ internal class GCRootPathsTree( } data class StackEntry( + val parentClass: ClassDefinition?, val edge: Edge, val node: RegularNode, val indent: String, val nextIndent: String ) - private class SoftWeakClassCache(private val classStore: ClassStore) { - val softClasses = mutableSetOf() - val weakClasses = mutableSetOf() - val nonSoftWeakClasses = mutableSetOf() - - fun getSoftWeakDescriptor(classDefinition: ClassDefinition): String? { - if (softClasses.contains(classDefinition)) - return "soft" - if (weakClasses.contains(classDefinition)) - return "weak" - if (nonSoftWeakClasses.contains(classDefinition)) - return null - - var definition = classDefinition - while (!classStore.isSoftOrWeakReferenceClass(definition)) { - val superclassDefinition = definition.getSuperClass(classStore) - if (superclassDefinition == null) { - nonSoftWeakClasses.add(classDefinition) - return null - } - definition = superclassDefinition - } - if (definition == classStore.weakReferenceClass) { - weakClasses.add(classDefinition) - return "weak" - } - else { - assert(definition == classStore.softReferenceClass) - softClasses.add(classDefinition) - return "soft" - } - } - - } - fun createHotPathReport(treeDisplayOptions: AnalysisConfig.TreeDisplayOptions, rootReasonGetter: (Int) -> String): String { val rootList = mutableListOf>() val result = StringBuilder() @@ -328,23 +308,21 @@ internal class GCRootPathsTree( treeDisplayOptions.minimumObjectCount, (Math.ceil(totalInstanceCount / 100.0) * treeDisplayOptions.minimumObjectCountPercent).toInt()) - val softWeakClassCache = SoftWeakClassCache(classStore) - // Show paths from roots that have at least minimumObjectCountPercent%, minimumObjectCount objects or size of all reported objects // in the subtree is more than minimumObjectSize. // Always show at least two paths. rootList + .sortedByDescending { it.second.pathsSize } .filterIndexed { index, (_, node, _) -> index < treeDisplayOptions.minimumPaths || node.pathsCount >= minimumObjectsForReport || node.pathsSize >= treeDisplayOptions.minimumObjectSize } - .sortedByDescending { it.second.pathsSize } .forEachIndexed { index, (rootObjectId, rootNode, rootEdge) -> val rootReasonString = rootReasonGetter(rootObjectId) val rootPercent = (100.0 * rootNode.pathsCount / totalInstanceCount).toInt() - result.appendln("Root ${index + 1}:") + result.appendLine("Root ${index + 1}:") printReportLine(printFunc, treeDisplayOptions, rootNode.pathsCount, @@ -352,8 +330,7 @@ internal class GCRootPathsTree( rootNode.pathsSize, rootNode.totalSizeInDwords.toLong() * 4, 1, - false, - null, + Status.getStatus(RefIndexUtil.ROOT, false, false), false, null, "", @@ -362,14 +339,12 @@ internal class GCRootPathsTree( TruncatingPrintBuffer(treeDisplayOptions.headLimit, treeDisplayOptions.tailLimit, printFunc).use { buffer -> // Iterate over the hot path val stack = ArrayDeque() - stack.push(StackEntry(rootEdge, rootNode, "", "")) + stack.push(StackEntry(null, rootEdge, rootNode, "", "")) while (!stack.isEmpty()) { - val (edge, node, indent, nextIndent) = stack.pop() - val (classDefinition, fieldName, disposed) = edge - - // Soft/weak referents don't have a parent field set to differentiate them from other (strong-referencing) fields. - val softWeakDescriptor = if (fieldName == null) softWeakClassCache.getSoftWeakDescriptor(classDefinition) else null + val (parentClass, edge, node, indent, nextIndent) = stack.pop() + val (classDefinition, refIndexByte, disposed) = edge + val refIndex = java.lang.Byte.toUnsignedInt(refIndexByte) printReportLine(buffer::println, treeDisplayOptions, @@ -378,10 +353,9 @@ internal class GCRootPathsTree( node.pathsSize, node.totalSizeInDwords.toLong() * 4, node.instances.size, - node.edges == null, - softWeakDescriptor, + Status.getStatus(refIndex, node.edges == null, disposed), disposed, - fieldName, + RefIndexUtil.getFieldDescription(refIndex, parentClass, classStore), indent, classDefinition.prettyName) @@ -400,7 +374,7 @@ internal class GCRootPathsTree( if (childrenToReport.size == 1 && treeDisplayOptions.smartIndent) { // No indentation for a single child - stack.push(StackEntry(childrenToReport[0].key, childrenToReport[0].value, nextIndent, nextIndent)) + stack.push(StackEntry(classDefinition, childrenToReport[0].key, childrenToReport[0].value, nextIndent, nextIndent)) } else { // Don't report too deep paths @@ -408,13 +382,13 @@ internal class GCRootPathsTree( printReportLine(buffer::println, treeDisplayOptions, null, null, null, null, - null, true, null, null, null, + null, Status.LastInPath, null, null, nextIndent, "\\-[...]") else { // Add indentation only if there are 2+ children childrenToReport.forEachIndexed { index, e -> - if (index == 0) stack.push(StackEntry(e.key, e.value, "$nextIndent\\-", "$nextIndent ")) - else stack.push(StackEntry(e.key, e.value, "$nextIndent+-", "$nextIndent| ")) + if (index == 0) stack.push(StackEntry(classDefinition, e.key, e.value, "$nextIndent\\-", "$nextIndent ")) + else stack.push(StackEntry(classDefinition, e.key, e.value, "$nextIndent+-", "$nextIndent| ")) } } } @@ -431,8 +405,7 @@ internal class GCRootPathsTree( instanceSize: Int?, subgraphSize: Long?, instanceCount: Int?, - lastInPath: Boolean, - softWeakDescriptor: String?, + status: Status, disposed: Boolean?, fieldName: String?, indent: String, @@ -441,18 +414,16 @@ internal class GCRootPathsTree( val percentString = (percent?.let { "$it%" } ?: "").padStart(4) val instanceSizeString = (instanceSize?.let { toShortStringAsSize(it.toLong()) } ?: "").padStart(STRING_PADDING_FOR_SIZE) val instanceCountString = (instanceCount ?: "").toString().padStart(10) - val status = if (lastInPath) "*" else if (softWeakDescriptor != null || disposed == true) "!" else " " - val fieldNameString = if (fieldName != null) ".$fieldName" else "" + val fieldNameString = if (fieldName != null) "$fieldName: " else "" val disposedString = if (disposed == true) " (disposed)" else "" - val softWeakString = if (softWeakDescriptor != null) " ($softWeakDescriptor)" else "" val subgraphSizeString = (subgraphSize?.let { toShortStringAsSize(it) } ?: "").padStart(STRING_PADDING_FOR_SIZE) if (treeDisplayOptions.showSize) { printFunc( - "[$pathsCountString/$percentString/$instanceSizeString] $subgraphSizeString $instanceCountString $status $indent$text$fieldNameString$disposedString$softWeakString") + "[$pathsCountString/$percentString/$instanceSizeString] $subgraphSizeString $instanceCountString $status $indent$fieldNameString$text$disposedString") } else { - printFunc("$status $indent$text$fieldNameString$disposedString$softWeakString") + printFunc("$status $indent$text$fieldNameString$disposedString") } } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/HProfAnalysis.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/HProfAnalysis.kt index 2bde0d8add24..039a853af7ba 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/HProfAnalysis.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/analysis/HProfAnalysis.kt @@ -21,11 +21,9 @@ import com.intellij.diagnostic.hprof.classstore.HProfMetadata import com.intellij.diagnostic.hprof.histogram.Histogram import com.intellij.diagnostic.hprof.navigator.ObjectNavigator import com.intellij.diagnostic.hprof.parser.HProfEventBasedParser -import com.intellij.diagnostic.hprof.util.FileBackedIntList -import com.intellij.diagnostic.hprof.util.FileBackedUByteList +import com.intellij.diagnostic.hprof.util.* import com.intellij.diagnostic.hprof.util.HeapReportUtils.sectionHeader import com.intellij.diagnostic.hprof.util.HeapReportUtils.toShortStringAsCount -import com.intellij.diagnostic.hprof.util.PartialProgressIndicator import com.intellij.diagnostic.hprof.visitors.RemapIDsVisitor import com.intellij.openapi.progress.ProgressIndicator import org.jetbrains.annotations.NonNls @@ -34,9 +32,9 @@ import java.nio.file.Files import java.nio.file.Path import java.nio.file.StandardOpenOption -internal class HProfAnalysis(private val hprofFileChannel: FileChannel, +class HProfAnalysis(private val hprofFileChannel: FileChannel, private val tempFilenameSupplier: TempFilenameSupplier, - private val analysisCallback: (AnalysisContext, ProgressIndicator) -> String) { + private val analysisCallback: (AnalysisContext, ListProvider, ProgressIndicator) -> String) { interface TempFilenameSupplier { fun getTempFilePath(type: String): Path @@ -61,7 +59,6 @@ internal class HProfAnalysis(private val hprofFileChannel: FileChannel, private fun openTempEmptyFileChannel(@NonNls type: String): FileChannel { val tempPath = tempFilenameSupplier.getTempFilePath(type) - val tempChannel = FileChannel.open(tempPath, StandardOpenOption.READ, StandardOpenOption.WRITE, @@ -73,6 +70,12 @@ internal class HProfAnalysis(private val hprofFileChannel: FileChannel, return tempChannel } + val fileBackedListProvider = object: ListProvider { + override fun createUByteList(name: String, size: Long) = FileBackedUByteList.createEmpty(openTempEmptyFileChannel(name), size) + override fun createUShortList(name: String, size: Long) = FileBackedUShortList.createEmpty(openTempEmptyFileChannel(name), size) + override fun createIntList(name: String, size: Long) = FileBackedIntList.createEmpty(openTempEmptyFileChannel(name), size) + } + fun analyze(progress: ProgressIndicator): String { val result = StringBuilder() val totalStopwatch = Stopwatch.createStarted() @@ -129,10 +132,10 @@ internal class HProfAnalysis(private val hprofFileChannel: FileChannel, prepareFilesStopwatch.stop() - val parentList = FileBackedIntList.createEmpty(openTempEmptyFileChannel("parents"), navigator.instanceCount + 1) - val sizesList = FileBackedIntList.createEmpty(openTempEmptyFileChannel("sizes"), navigator.instanceCount + 1) - val visitedList = FileBackedIntList.createEmpty(openTempEmptyFileChannel("visited"), navigator.instanceCount + 1) - val refIndexList = FileBackedUByteList.createEmpty(openTempEmptyFileChannel("refIndex"), navigator.instanceCount + 1) + val parentList = fileBackedListProvider.createIntList("parents", navigator.instanceCount + 1) + val sizesList = fileBackedListProvider.createIntList("sizes", navigator.instanceCount + 1) + val visitedList = fileBackedListProvider.createIntList("visited", navigator.instanceCount + 1) + val refIndexList = fileBackedListProvider.createUByteList("refIndex", navigator.instanceCount + 1) analysisStopwatch.start() @@ -150,7 +153,7 @@ internal class HProfAnalysis(private val hprofFileChannel: FileChannel, histogram ) - val analysisReport = analysisCallback(analysisContext, PartialProgressIndicator(progress, 0.4, 0.4)) + val analysisReport = analysisCallback(analysisContext, fileBackedListProvider, PartialProgressIndicator(progress, 0.4, 0.4)) if (analysisReport.isNotBlank()) { result.appendln(analysisReport) } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/classstore/ClassDefinition.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/classstore/ClassDefinition.kt index 809cf0b1aa75..1b8e8227085f 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/classstore/ClassDefinition.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/classstore/ClassDefinition.kt @@ -49,6 +49,9 @@ class ClassDefinition(val name: String, val prettyName: String get() = computePrettyName(name) + val undecoratedName: String + get() = name.substringBefore('!') + companion object { const val OBJECT_PREAMBLE_SIZE = 8 const val ARRAY_PREAMBLE_SIZE = 12 diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/navigator/ObjectNavigator.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/navigator/ObjectNavigator.kt index 15396565fdda..646de8db1c3e 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/navigator/ObjectNavigator.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/navigator/ObjectNavigator.kt @@ -34,6 +34,8 @@ abstract class ObjectNavigator(val classStore: ClassStore, val instanceCount: Lo data class RootObject(val id: Long, val reason: RootReason) + class NavigationException(message: String) : RuntimeException(message) + abstract val id: Long abstract fun createRootsIterator(): Iterator @@ -54,17 +56,19 @@ abstract class ObjectNavigator(val classStore: ClassStore, val instanceCount: Lo abstract fun getWeakReferenceId(): Long abstract fun getSoftWeakReferenceIndex(): Int - fun goToInstanceField(@NonNls className: String, @NonNls fieldName: String) { + fun goToInstanceField(@NonNls className: String?, @NonNls fieldName: String) { val objectId = getInstanceFieldObjectId(className, fieldName) goTo(objectId, ReferenceResolution.ALL_REFERENCES) } - fun getInstanceFieldObjectId(@NonNls className: String, @NonNls name: String): Long { + fun getInstanceFieldObjectId(@NonNls className: String?, @NonNls name: String): Long { val refs = getReferencesCopy() - assert(className == getClass().name.substringBeforeLast('!')) { "Expected $className, got ${getClass().name}" } + if (className != null && className != getClass().undecoratedName) { + throw NavigationException("Expected $className, got ${getClass().undecoratedName}") + } val indexOfField = getClass().allRefFieldNames(classStore).indexOfFirst { it == name } if (indexOfField == -1) { - throw IllegalStateException("Can't find field $name in class $className") + throw NavigationException("Missing field $name in ${getClass().name}") } return refs.getLong(indexOfField) } @@ -74,8 +78,12 @@ abstract class ObjectNavigator(val classStore: ClassStore, val instanceCount: Lo goTo(objectId, ReferenceResolution.ALL_REFERENCES) } - private fun getStaticFieldObjectId(className: String, fieldName: String) = - classStore[className].objectStaticFields.first { it.name == fieldName }.value + private fun getStaticFieldObjectId(className: String, fieldName: String): Long { + val staticField = + classStore[className].objectStaticFields.firstOrNull { it.name == fieldName } + ?: throw NavigationException("Missing static field $fieldName in class $className") + return staticField.value + } companion object { fun createOnAuxiliaryFiles(parser: HProfEventBasedParser, diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/AnalysisReport.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/AnalysisReport.kt new file mode 100644 index 000000000000..f76f84c831e6 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/AnalysisReport.kt @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +class AnalysisReport(val mainReport: StringBuilder = StringBuilder(), val metaInfo: StringBuilder = StringBuilder()) diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/FileBackedUShortList.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/FileBackedUShortList.kt new file mode 100644 index 000000000000..8d406feb50a4 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/FileBackedUShortList.kt @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +import java.nio.ByteBuffer +import java.nio.channels.FileChannel + +class FileBackedUShortList(private val buffer: ByteBuffer) : UShortList { + + override operator fun get(index: Int): Int { + buffer.position(index * 2) + return java.lang.Short.toUnsignedInt(buffer.short) + } + + override operator fun set(index: Int, value: Int) { + assert(value in 0..65535) + buffer.position(index * 2) + buffer.putShort(value.toShort()) + } + + companion object { + fun createEmpty(channel: FileChannel, size: Long): UShortList { + FileBackedHashMap.createEmptyFile(channel, size * 2) + return FileBackedUShortList(channel.map(FileChannel.MapMode.READ_WRITE, 0, channel.size())) + } + } +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/HprofWriter.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/HprofWriter.kt new file mode 100644 index 000000000000..bd67c53840b7 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/HprofWriter.kt @@ -0,0 +1,290 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +import com.intellij.diagnostic.hprof.parser.* +import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap +import java.io.ByteArrayOutputStream +import java.io.Closeable +import java.io.DataOutput +import java.io.DataOutputStream + +class HprofWriter( + private val dos: DataOutputStream, + private val idSize: Int, + timestamp: Long +) : Closeable { + + init { + if (idSize != 4 && idSize != 8) { + throw IllegalArgumentException("idSize can only be 4 or 8") + } + dos.writeNullTerminatedString("JAVA PROFILE 1.0.1") + dos.writeInt(idSize) + dos.writeLong(timestamp) + } + + private val stringToIdMap = Object2LongOpenHashMap() + private val idToStringMap = Long2ObjectOpenHashMap() + private var nextStringId = 1L + private val subtagsBaos = ByteArrayOutputStream() + private var subtagsStream = DataOutputStream(subtagsBaos) + + override fun close() { + flushHeapObjects() + dos.close() + } + + private fun DataOutput.writeNullTerminatedString(s: String) { + this.write(s.toByteArray()) + this.write(0) + } + + fun writeStringInUTF8(id: Long, s: String) { + val bytes = s.toByteArray() + writeRecordHeader(RecordType.StringInUTF8, bytes.size + idSize) + dos.writeId(id) + dos.write(bytes) + } + + fun writeLoadClass(serialNumber: Int, classObjectId: Long, stackTraceSerialNumber: Int, classNameId: Long) { + writeRecordHeader(RecordType.LoadClass, 8 + idSize * 2) + dos.writeInt(serialNumber) + dos.writeId(classObjectId) + dos.writeInt(stackTraceSerialNumber) + dos.writeId(classNameId) + } + + fun flushHeapObjects() { + writeHeapDumpRecords() + } + + private fun writeHeapDumpRecords() { + if (subtagsBaos.size() > 0) { + subtagsStream.close() + writeRecordHeader(RecordType.HeapDump, subtagsBaos.size()) + subtagsBaos.writeTo(dos) + subtagsBaos.reset() + subtagsStream = DataOutputStream(subtagsBaos) + writeRecordHeader(RecordType.HeapDumpEnd, 0) + } + } + + fun writeRootUnknown(id: Long) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.RootUnknown) + writeId(id) + } + } + + fun writeRootJavaFrame(objectId: Long, threadSerialNumber: Int, frameNumber: Int) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.RootJavaFrame) + writeId(objectId) + writeInt(threadSerialNumber) + writeInt(frameNumber) + } + } + + fun writeClassDump( + classObjectId: Long, + stackTraceSerialNumber: Int, + superClassObjectId: Long, + classLoaderObjectId: Long, + signersObjectId: Long, + protectionDomainObjectId: Long, + instanceSize: Int, + constantPool: Array, + staticFields: Array, + instanceFields: Array + ) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.ClassDump) + writeId(classObjectId) + writeInt(stackTraceSerialNumber) + writeId(superClassObjectId) + writeId(classLoaderObjectId) + writeId(signersObjectId) + writeId(protectionDomainObjectId) + writeId(0) + writeId(0) + writeInt(instanceSize) + writeShort(constantPool.size) + for (entry in constantPool) { + writeShort(entry.constantPoolIndex) + writeByte(entry.type.typeId) + writeValue(entry.value, entry.type) + } + writeShort(staticFields.size) + for (entry in staticFields) { + writeId(entry.fieldNameStringId) + writeByte(entry.type.typeId) + writeValue(entry.value, entry.type) + } + writeShort(instanceFields.size) + for (entry in instanceFields) { + writeId(entry.fieldNameStringId) + writeByte(entry.type.typeId) + } + } + } + + fun writeInstanceDump( + objectId: Long, + stackTraceSerialNumber: Int, + classObjectId: Long, + bytes: ByteArray + ) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.InstanceDump) + writeId(objectId) + writeInt(stackTraceSerialNumber) + writeId(classObjectId) + writeInt(bytes.count()) + write(bytes) + } + } + + fun writeObjectArrayDump( + arrayObjectId: Long, + stackTraceSerialNumber: Int, + arrayClassObjectId: Long, + elementIds: LongArray + ) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.ObjectArrayDump) + writeId(arrayObjectId) + writeInt(stackTraceSerialNumber) + writeInt(elementIds.count()) + writeId(arrayClassObjectId) + elementIds.forEach { id -> + writeId(id) + } + } + } + + fun writePrimitiveArrayDump( + arrayObjectId: Long, + stackTraceSerialNumber: Int, + elementType: Type, + elements: ByteArray, + elementsCount: Int + ) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.PrimitiveArrayDump) + writeId(arrayObjectId) + writeInt(stackTraceSerialNumber) + writeInt(elementsCount) + assert(elementType != Type.OBJECT) + writeByte(elementType.typeId) + assert(elements.size == elementsCount * elementType.size) + write(elements) + } + } + + private fun getOrCreateStringId(s: String): Long { + val id = stringToIdMap.getLong(s) + if (id == 0L) { + val newId = nextStringId++ + writeStringInUTF8(newId, s) + idToStringMap.put(newId, s) + stringToIdMap.put(s, newId) + return newId + } + return id + } + + + private fun writeRecordHeader(recordType: RecordType, length: Int) { + with(dos) { + writeByte(recordType.value) + writeInt(0) // timestamp, not supported + writeInt(length) + } + } + + private fun writeHeapDumpRecordHeader(heapDumpRecordType: HeapDumpRecordType) { + with(subtagsStream) { + writeByte(heapDumpRecordType.value) + } + } + + fun writeRootGlobalJNI(objectId: Long, jniGlobalRefId: Long) { + with(subtagsStream) { + writeHeapDumpRecordHeader(HeapDumpRecordType.RootGlobalJNI) + writeId(objectId) + writeId(jniGlobalRefId) + } + } + + private fun DataOutputStream.writeId(id: Long) { + when (idSize) { + 4 -> this.writeInt(id.toInt()) + 8 -> this.writeLong(id) + else -> assert(false) + } + } + + private fun DataOutputStream.writeValue(value: Long, type: Type) { + if (type == Type.OBJECT) { + writeId(value) + } + else { + when (type.size) { + 1 -> writeByte(value.toInt()) + 2 -> writeShort(value.toInt()) + 4 -> writeInt(value.toInt()) + 8 -> writeLong(value) + else -> assert(false) + } + } + } + + fun writeStackTrace(stackTraceSerialNumber: Int, threadSerialNumber: Long, stackFrameIds: LongArray) { + with (dos) { + val length = 3 * 4 + idSize * stackFrameIds.size + writeRecordHeader(RecordType.StackTrace, length) + writeInt(stackTraceSerialNumber) + writeInt(threadSerialNumber.toInt()) + writeInt(stackFrameIds.size) + for (frameId in stackFrameIds) { + writeId(frameId) + } + } + } + + + fun writeStackFrame(stackFrameId: Long, + methodNameStringId: Long, + methodSignatureStringId: Long, + sourceFilenameStringId: Long, + classSerialNumber: Int, + lineNumber: Int) + { + with (dos) { + val length = (4 * idSize) + (2 * 4) + writeRecordHeader(RecordType.StackFrame, length) + writeId(stackFrameId) + writeId(methodNameStringId) + writeId(methodSignatureStringId) + writeId(sourceFilenameStringId) + writeInt(classSerialNumber) + writeInt(lineNumber) + } + } +} + diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/ListProvider.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/ListProvider.kt new file mode 100644 index 000000000000..b46c69ab62b8 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/ListProvider.kt @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +interface ListProvider { + fun createUByteList(name: String, size: Long): UByteList + fun createUShortList(name: String, size: Long): UShortList + fun createIntList(name: String, size: Long): IntList +} diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/RefIndexUtil.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/RefIndexUtil.kt new file mode 100644 index 000000000000..db1c66f90274 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/RefIndexUtil.kt @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +import com.intellij.diagnostic.hprof.classstore.ClassDefinition +import com.intellij.diagnostic.hprof.classstore.ClassStore + +object RefIndexUtil { + + fun getFieldDescription(refIndex: Int, + classDefinition: ClassDefinition?, + classStore: ClassStore): String? { + return when (refIndex) { + ROOT -> "(root)" + SOFT_REFERENCE -> "(soft)" + WEAK_REFERENCE -> "(weak)" + ARRAY_ELEMENT -> "[]" + DISPOSER_CHILD -> "(disposer-tree)" + FIELD_OMITTED -> null + else -> classDefinition?.getRefField(classStore, refIndex - 1)?.name ?: "(field_$refIndex)" + } + } + + const val FIELD_OMITTED = 0 + const val MAX_FIELD_INDEX = 250 + + const val ROOT = 251 + const val SOFT_REFERENCE = 252 + const val WEAK_REFERENCE = 253 + const val ARRAY_ELEMENT = 254 + const val DISPOSER_CHILD = 255 +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeNode.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeNode.kt new file mode 100644 index 000000000000..15d1dbc17cc2 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeNode.kt @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +interface TreeNode { + fun description(): String + fun children(): Collection +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeVisualizer.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeVisualizer.kt new file mode 100644 index 000000000000..043814cb227f --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/TreeVisualizer.kt @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +import com.intellij.diagnostic.hprof.analysis.AnalysisConfig +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap +import java.util.* + +class TreeVisualizer { + + private class IndentStore { + private val map = Int2ObjectOpenHashMap() + + fun getIndentForDepth(size: Int): String { + if (map.containsKey(size)) { + return map[size] + } + val indent = " ".repeat(size) + map[size] = indent + return indent + } + } + + fun visualizeTree(root: TreeNode, buffer: TruncatingPrintBuffer, options: AnalysisConfig.DisposerTreeSummaryOptions) { + data class StackItem(val node: TreeNode, val depth: Int) + + val nodeStack = Stack().apply { push(StackItem(root, 0)) } + val indentStore = IndentStore() + while (!nodeStack.empty()) { + val (node, depth) = nodeStack.pop() + val indent = indentStore.getIndentForDepth(depth) + buffer.println(indent + node.description()) + val children = node.children().reversed() + + if (depth >= options.maxDepth && children.isNotEmpty()) { + buffer.println(indentStore.getIndentForDepth(depth + 1) + "[...]") + } + else { + children.forEach { child -> nodeStack.push(StackItem(child, depth + 1)) } + } + } + } +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/UShortList.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/UShortList.kt new file mode 100644 index 000000000000..89218c8aa3ec --- /dev/null +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/util/UShortList.kt @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof.util + +interface UShortList { + operator fun get(index: Int): Int + operator fun set(index: Int, value: Int) +} \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/diagnostic/hprof/visitors/CollectRootReasonsVisitor.kt b/platform/platform-impl/src/com/intellij/diagnostic/hprof/visitors/CollectRootReasonsVisitor.kt index bae427990d9a..f8a9086df31d 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/hprof/visitors/CollectRootReasonsVisitor.kt +++ b/platform/platform-impl/src/com/intellij/diagnostic/hprof/visitors/CollectRootReasonsVisitor.kt @@ -58,7 +58,10 @@ class CollectRootReasonsVisitor(private val threadsMap: Long2ObjectMap - val analysis = HProfAnalysis(channel, SystemTempFilenameSupplier()) { analysisContext, progressIndicator -> - AnalyzeClassloaderReferencesGraph(analysisContext, pluginId.idString).analyze(progressIndicator) + val analysis = HProfAnalysis(channel, SystemTempFilenameSupplier()) { analysisContext, listProvider, progressIndicator -> + AnalyzeClassloaderReferencesGraph(analysisContext, listProvider, pluginId.idString).analyze(progressIndicator).mainReport.toString() } analysis.onlyStrongReferences = true analysis.includeClassesAsRoots = false diff --git a/platform/platform-tests/intellij.platform.tests.iml b/platform/platform-tests/intellij.platform.tests.iml index 7bfa02545503..a1d048c5dad5 100644 --- a/platform/platform-tests/intellij.platform.tests.iml +++ b/platform/platform-tests/intellij.platform.tests.iml @@ -71,5 +71,6 @@ + \ No newline at end of file diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.1.8.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.1.8.txt new file mode 100644 index 000000000000..f2584c7c894b --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.1.8.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 7/ 644B] [ 7/ 644B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] MyTestClass!2 + 3: [ 1/ 8B] [ 1/ 8B] MyTestClass!1 +Total - All: 9 660B 3 classes (Total instances: 9) +Total - Strong-ref: 9 660B 3 classes (Total instances: 9) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 7 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] MyTestClass!1 + --> [1/8B] MyTestClass!2 + +CLASS: MyTestClass!1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Global JNI +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!1 + +CLASS: MyTestClass!2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.17.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.17.txt new file mode 100644 index 000000000000..64c247fbcce8 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.17.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 7/ 756B] [ 7/ 756B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] MyTestClass!2 + 3: [ 1/ 8B] [ 1/ 8B] MyTestClass!1 +Total - All: 9 772B 3 classes (Total instances: 9) +Total - Strong-ref: 9 772B 3 classes (Total instances: 9) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 7 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] MyTestClass!1 + --> [1/8B] MyTestClass!2 + +CLASS: MyTestClass!1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Global JNI +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!1 + +CLASS: MyTestClass!2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.txt new file mode 100644 index 000000000000..459202cee368 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testClassNameClash.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 7/ 812B] [ 7/ 812B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] MyTestClass!2 + 3: [ 1/ 8B] [ 1/ 8B] MyTestClass!1 +Total - All: 9 828B 3 classes (Total instances: 9) +Total - Strong-ref: 9 828B 3 classes (Total instances: 9) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 7 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] MyTestClass!1 + --> [1/8B] MyTestClass!2 + +CLASS: MyTestClass!1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Global JNI +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!1 + +CLASS: MyTestClass!2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): MyTestClass!2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testDisposerTreeSummarySection.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDisposerTreeSummarySection.txt new file mode 100644 index 000000000000..eb220216f19f --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDisposerTreeSummarySection.txt @@ -0,0 +1,12 @@ +============== DISPOSER TREE SUMMARY ============== +Cutoff: 0 +Count of disposable objects: 9 + +[7] 1 MyDisposableRoot + [5] 3 MyDisposableChild + [2] 2 MyDisposableGrandchild + [1] 1 com.intellij.openapi.util.Disposer$1 + +[2] 1 com.intellij.openapi.util.Disposer$1 + [1] 1 MyDisposableChild + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.17.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.17.txt new file mode 100644 index 000000000000..9a24baae386d --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.17.txt @@ -0,0 +1,32 @@ +============ DOMINATOR TREE FLAME GRAPH =========== +9 +root +A +B +E +G +C +D +F +java.lang.Class +0 15 14 +1 8 4 +2 6 1 +3 4 1 +4 4 0 +5 4 0 +6 2 0 +7 2 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 +8 27 0 diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.txt new file mode 100644 index 000000000000..b92a6a883921 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testDominatorTreeFlameGraph.txt @@ -0,0 +1,32 @@ +============ DOMINATOR TREE FLAME GRAPH =========== +9 +root +A +B +E +G +C +D +F +java.lang.Class +0 8 14 +1 8 4 +2 6 1 +3 4 1 +4 4 0 +5 4 0 +6 2 0 +7 2 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 +8 29 0 diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.17.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.17.txt new file mode 100644 index 000000000000..cf7694bec53a --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.17.txt @@ -0,0 +1,22 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 6/ 648B] [ 6/ 648B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] C1 +Total - All: 7 656B 2 classes (Total instances: 7) +Total - Strong-ref: 7 656B 2 classes (Total instances: 7) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 6 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] C1 + +CLASS: C1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): C1 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.txt new file mode 100644 index 000000000000..12bd9209f780 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testIgnoreRootWithNoMatchingObject.txt @@ -0,0 +1,22 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 6/ 696B] [ 6/ 696B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] C1 +Total - All: 7 704B 2 classes (Total instances: 7) +Total - Strong-ref: 7 704B 2 classes (Total instances: 7) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 6 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] C1 + +CLASS: C1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): C1 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.1.8.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.1.8.txt new file mode 100644 index 000000000000..d1053da6b0cd --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.1.8.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 9/ 828B] [ 9/ 828B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] C1 + 3: [ 1/ 8B] [ 1/ 8B] C2 +Total - All: 11 844B 3 classes (Total instances: 11) +Total - Strong-ref: 11 844B 3 classes (Total instances: 11) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 9 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] C1 + --> [1/8B] C2 + +CLASS: C1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): C1 + +CLASS: C2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Java Frame: com.android.tools.idea.diagnostics.hprof.HProfBuilder.com.android.tools.idea.diagnostics.hprof.HProfBuilder.addStackTrace +[ 1/100%/ 8B] 8B 1 * (root): C2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.17.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.17.txt new file mode 100644 index 000000000000..d9d62da43a42 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.17.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 9/ 972B] [ 9/ 972B] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] C1 + 3: [ 1/ 8B] [ 1/ 8B] C2 +Total - All: 11 988B 3 classes (Total instances: 11) +Total - Strong-ref: 11 988B 3 classes (Total instances: 11) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 9 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] C1 + --> [1/8B] C2 + +CLASS: C1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): C1 + +CLASS: C2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Java Frame: com.intellij.diagnostic.hprof.HProfBuilder.com.intellij.diagnostic.hprof.HProfBuilder.addStackTrace +[ 1/100%/ 8B] 8B 1 * (root): C2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.txt new file mode 100644 index 000000000000..f1b92768cafc --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testJavaFrameGCRootPriority.txt @@ -0,0 +1,29 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 9/1.04KB] [ 9/1.04KB] java.lang.Class + 2: [ 1/ 8B] [ 1/ 8B] C1 + 3: [ 1/ 8B] [ 1/ 8B] C2 +Total - All: 11 1.06KB 3 classes (Total instances: 11) +Total - Strong-ref: 11 1.06KB 3 classes (Total instances: 11) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 9 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [1/8B] C1 + --> [1/8B] C2 + +CLASS: C1 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Unknown +[ 1/100%/ 8B] 8B 1 * (root): C1 + +CLASS: C2 (1 objects) +Root 1: +[ 1/100%/ 8B] 8B 1 ROOT: Java Frame: com.android.tools.idea.diagnostics.hprof.HProfBuilder.com.android.tools.idea.diagnostics.hprof.HProfBuilder.addStackTrace +[ 1/100%/ 8B] 8B 1 * (root): C2 + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.1.8.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.1.8.txt new file mode 100644 index 000000000000..80e0c129751c --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.1.8.txt @@ -0,0 +1,105 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 18/1.65KB] [ 18/1.65KB] java.lang.Class + 2: [ 12/ 192B] [ 9/ 144B] TestString + 3: [ 8/ 192B] [ 6/ 144B] TestClassB + 4: [ 4/ 128B] [ 3/ 96B] TestClassA + 5: [ 3/ 60B] [ 3/ 60B] java.lang.String + 6: [ 3/ 100B] [ 3/ 100B] char[] + 7: [ 3/ 48B] [ 3/ 48B] MyRef + 8: [ 2/ 16B] [ 2/ 16B] java.lang.ref.WeakReference + 9: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Lock + 10: [ 1/ 16B] [ 1/ 16B] java.util.Arrays$ArrayList + 11: [ 1/ 44B] [ 1/ 44B] java.lang.Object[] + 12: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Null +Total - All: 57 2.46KB 12 classes (Total instances: 57) +Total - Strong-ref: 51 2.34KB 12 classes (Total instances: 51) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 18 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 128B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [8/192B] TestClassB + --> [4/128B] TestClassA + --> [12/192B] TestString + +CLASS: TestClassB (8 objects) +Root 1: +[ 6/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 6/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 6/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 2/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 2/ 25%/ 48B] 160B 1 | referent: MyRef +[ 2/ 25%/ 48B] 144B 1 | referent: MyRef +[ 2/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 2/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 12%/ 24B] 40B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * \-a3b: TestClassB +Root 2: +[ 2/ 25%/ 48B] 292B 1 ROOT: Unknown +[ 2/ 25%/ 48B] 292B 1 (root): TestClassA +[ 1/ 12%/ 24B] 96B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 96B 1 * \-a3b: TestClassB + +CLASS: TestClassA (4 objects) +Root 1: +[ 3/ 75%/ 96B] 524B 1 ROOT: Global JNI +[ 3/ 75%/ 96B] 524B 1 (root): java.util.Arrays$ArrayList +[ 3/ 75%/ 96B] 508B 1 a: java.lang.Object[] +[ 1/ 25%/ 32B] 176B 1 +-[]: MyRef +[ 1/ 25%/ 32B] 160B 1 | referent: MyRef +[ 1/ 25%/ 32B] 144B 1 | referent: MyRef +[ 1/ 25%/ 32B] 128B 1 * | referent: TestClassA +[ 1/ 25%/ 32B] 128B 1 * +-[]: TestClassA +[ 1/ 25%/ 32B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 1/ 25%/ 32B] 128B 1 * (weak): TestClassA +Root 2: +[ 1/ 25%/ 32B] 292B 1 ROOT: Unknown +[ 1/ 25%/ 32B] 292B 1 * (root): TestClassA + +CLASS: TestString (12 objects) +Root 1: +[ 9/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 9/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 9/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 3/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 3/ 25%/ 48B] 160B 1 | referent: MyRef +[ 3/ 25%/ 48B] 144B 1 | referent: MyRef +[ 3/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 | \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 3/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 | \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 3/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 3/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 8%/ 16B] 40B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 40B 1 +-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * \-a1string: TestString +Root 2: +[ 3/ 25%/ 48B] 292B 1 ROOT: Unknown +[ 3/ 25%/ 48B] 292B 1 (root): TestClassA +[ 1/ 8%/ 16B] 96B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 72B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 96B 1 +-a3b: TestClassB +[ 1/ 8%/ 16B] 72B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 68B 1 * \-a1string: TestString + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.17.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.17.txt new file mode 100644 index 000000000000..d9cca0ba595f --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.17.txt @@ -0,0 +1,105 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 18/1.94KB] [ 18/1.94KB] java.lang.Class + 2: [ 12/ 192B] [ 9/ 144B] TestString + 3: [ 8/ 192B] [ 6/ 144B] TestClassB + 4: [ 4/ 128B] [ 3/ 96B] TestClassA + 5: [ 3/ 66B] [ 3/ 66B] java.lang.String + 6: [ 3/ 68B] [ 3/ 68B] byte[] + 7: [ 3/ 48B] [ 3/ 48B] MyRef + 8: [ 2/ 16B] [ 2/ 16B] java.lang.ref.WeakReference + 9: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Lock + 10: [ 1/ 16B] [ 1/ 16B] java.util.Arrays$ArrayList + 11: [ 1/ 44B] [ 1/ 44B] java.lang.Object[] + 12: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Null +Total - All: 57 2.73KB 12 classes (Total instances: 57) +Total - Strong-ref: 51 2.6KB 12 classes (Total instances: 51) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 18 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 128B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [8/192B] TestClassB + --> [4/128B] TestClassA + --> [12/192B] TestString + +CLASS: TestClassB (8 objects) +Root 1: +[ 6/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 6/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 6/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 2/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 2/ 25%/ 48B] 160B 1 | referent: MyRef +[ 2/ 25%/ 48B] 144B 1 | referent: MyRef +[ 2/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 2/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 12%/ 24B] 40B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * \-a3b: TestClassB +Root 2: +[ 2/ 25%/ 48B] 272B 1 ROOT: Unknown +[ 2/ 25%/ 48B] 272B 1 (root): TestClassA +[ 1/ 12%/ 24B] 88B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 88B 1 * \-a3b: TestClassB + +CLASS: TestClassA (4 objects) +Root 1: +[ 3/ 75%/ 96B] 524B 1 ROOT: Global JNI +[ 3/ 75%/ 96B] 524B 1 (root): java.util.Arrays$ArrayList +[ 3/ 75%/ 96B] 508B 1 a: java.lang.Object[] +[ 1/ 25%/ 32B] 176B 1 +-[]: MyRef +[ 1/ 25%/ 32B] 160B 1 | referent: MyRef +[ 1/ 25%/ 32B] 144B 1 | referent: MyRef +[ 1/ 25%/ 32B] 128B 1 * | referent: TestClassA +[ 1/ 25%/ 32B] 128B 1 * +-[]: TestClassA +[ 1/ 25%/ 32B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 1/ 25%/ 32B] 128B 1 * (weak): TestClassA +Root 2: +[ 1/ 25%/ 32B] 272B 1 ROOT: Unknown +[ 1/ 25%/ 32B] 272B 1 * (root): TestClassA + +CLASS: TestString (12 objects) +Root 1: +[ 9/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 9/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 9/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 3/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 3/ 25%/ 48B] 160B 1 | referent: MyRef +[ 3/ 25%/ 48B] 144B 1 | referent: MyRef +[ 3/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 40B 1 | +-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | \-a1string: TestString +[ 3/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 | \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 3/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 3/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 8%/ 16B] 40B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * b2string: TestString +Root 2: +[ 3/ 25%/ 48B] 272B 1 ROOT: Unknown +[ 3/ 25%/ 48B] 272B 1 (root): TestClassA +[ 1/ 8%/ 16B] 88B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 64B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 88B 1 +-a3b: TestClassB +[ 1/ 8%/ 16B] 64B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 64B 1 * \-a1string: TestString + diff --git a/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.txt b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.txt new file mode 100644 index 000000000000..21ed54d594c3 --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/analysis-baseline/testPathsThroughDifferentFields.txt @@ -0,0 +1,105 @@ +==================== HISTOGRAM ==================== +Histogram. Top 2147483647 by instance count [All-objects] [Only-strong-ref]: + 1: [ 18/2.08KB] [ 18/2.08KB] java.lang.Class + 2: [ 12/ 192B] [ 9/ 144B] TestString + 3: [ 8/ 192B] [ 6/ 144B] TestClassB + 4: [ 4/ 128B] [ 3/ 96B] TestClassA + 5: [ 3/ 63B] [ 3/ 63B] java.lang.String + 6: [ 3/ 68B] [ 3/ 68B] byte[] + 7: [ 3/ 48B] [ 3/ 48B] MyRef + 8: [ 2/ 16B] [ 2/ 16B] java.lang.ref.WeakReference + 9: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Lock + 10: [ 1/ 16B] [ 1/ 16B] java.util.Arrays$ArrayList + 11: [ 1/ 44B] [ 1/ 44B] java.lang.Object[] + 12: [ 1/ 8B] [ 1/ 8B] java.lang.ref.ReferenceQueue$Null +Total - All: 57 2.87KB 12 classes (Total instances: 57) +Total - Strong-ref: 51 2.74KB 12 classes (Total instances: 51) +Unreachable objects: 0 0B +=================== HEAP SUMMARY ================== +Class count: 18 +Finalizable size: 0B +Soft-reachable size: 0B +Weak-reachable size: 128B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [8/192B] TestClassB + --> [4/128B] TestClassA + --> [12/192B] TestString + +CLASS: TestClassB (8 objects) +Root 1: +[ 6/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 6/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 6/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 2/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 2/ 25%/ 48B] 160B 1 | referent: MyRef +[ 2/ 25%/ 48B] 144B 1 | referent: MyRef +[ 2/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 12%/ 24B] 40B 1 * | +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * | \-a3b: TestClassB +[ 2/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 2/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 12%/ 24B] 40B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 40B 1 * \-a3b: TestClassB +Root 2: +[ 2/ 25%/ 48B] 272B 1 ROOT: Unknown +[ 2/ 25%/ 48B] 272B 1 (root): TestClassA +[ 1/ 12%/ 24B] 88B 1 * +-a2b: TestClassB +[ 1/ 12%/ 24B] 88B 1 * \-a3b: TestClassB + +CLASS: TestClassA (4 objects) +Root 1: +[ 3/ 75%/ 96B] 524B 1 ROOT: Global JNI +[ 3/ 75%/ 96B] 524B 1 (root): java.util.Arrays$ArrayList +[ 3/ 75%/ 96B] 508B 1 a: java.lang.Object[] +[ 1/ 25%/ 32B] 176B 1 +-[]: MyRef +[ 1/ 25%/ 32B] 160B 1 | referent: MyRef +[ 1/ 25%/ 32B] 144B 1 | referent: MyRef +[ 1/ 25%/ 32B] 128B 1 * | referent: TestClassA +[ 1/ 25%/ 32B] 128B 1 * +-[]: TestClassA +[ 1/ 25%/ 32B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 1/ 25%/ 32B] 128B 1 * (weak): TestClassA +Root 2: +[ 1/ 25%/ 32B] 272B 1 ROOT: Unknown +[ 1/ 25%/ 32B] 272B 1 * (root): TestClassA + +CLASS: TestString (12 objects) +Root 1: +[ 9/ 75%/ 144B] 524B 1 ROOT: Global JNI +[ 9/ 75%/ 144B] 524B 1 (root): java.util.Arrays$ArrayList +[ 9/ 75%/ 144B] 508B 1 a: java.lang.Object[] +[ 3/ 25%/ 48B] 176B 1 +-[]: MyRef +[ 3/ 25%/ 48B] 160B 1 | referent: MyRef +[ 3/ 25%/ 48B] 144B 1 | referent: MyRef +[ 3/ 25%/ 48B] 128B 1 | referent: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 | \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 3/ 25%/ 48B] 128B 1 +-[]: TestClassA +[ 1/ 8%/ 16B] 40B 1 | +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * | +-a1string: TestString +[ 1/ 8%/ 16B] 40B 1 | \-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 3/ 25%/ 48B] 152B 1 \-[]: java.lang.ref.WeakReference +[ 3/ 25%/ 48B] 128B 1 ! (weak): TestClassA +[ 1/ 8%/ 16B] 40B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 40B 1 +-a3b: TestClassB +[ 1/ 8%/ 16B] 16B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 16B 1 * \-a1string: TestString +Root 2: +[ 3/ 25%/ 48B] 272B 1 ROOT: Unknown +[ 3/ 25%/ 48B] 272B 1 (root): TestClassA +[ 1/ 8%/ 16B] 88B 1 +-a2b: TestClassB +[ 1/ 8%/ 16B] 64B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 88B 1 +-a3b: TestClassB +[ 1/ 8%/ 16B] 64B 1 * | b2string: TestString +[ 1/ 8%/ 16B] 64B 1 * \-a1string: TestString + diff --git a/platform/platform-tests/testData/diagnostic/sample-report.txt b/platform/platform-tests/testData/diagnostic/sample-report.txt new file mode 100644 index 000000000000..e4871b6d109e --- /dev/null +++ b/platform/platform-tests/testData/diagnostic/sample-report.txt @@ -0,0 +1,283 @@ +==================== HISTOGRAM ==================== +Histogram. Top 50 by instance count [All-objects] [Only-strong-ref]: + 1: [3.45K/ 235KB] [1.92K/ 173KB] char[] + 2: [3.43K/68.7KB] [1.91K/38.2KB] java.lang.String + 3: [ 711/71.1KB] [ 711/71.1KB] java.lang.Class + 4: [ 632/61.7KB] [ 335/21.5KB] java.lang.Object[] + 5: [ 622/32.3KB] [ 34/1.76KB] java.util.LinkedHashMap$Entry + 6: [ 425/ 132KB] [ 408/ 129KB] byte[] + 7: [ 358/12.8KB] [ 354/12.7KB] java.util.HashMap$Node + 8: [ 290/20.1KB] [ 128/10.3KB] java.lang.String[] + 9: [ 256/3.07KB] [ 256/3.07KB] java.lang.Integer + 10: [ 157/5.65KB] [ 157/5.65KB] java.util.Hashtable$Entry + 11: [ 136/ 7.4KB] [ 19/5.48KB] int[] + 12: [ 109/11.4KB] [ 0/ 0B] java.lang.reflect.Field + 13: [ 106/5.08KB] [ 83/3.98KB] java.lang.ref.SoftReference + 14: [ 105/3.78KB] [ 104/3.74KB] java.util.concurrent.ConcurrentHashMap$Node + 15: [ 84/ 672B] [ 73/ 584B] java.lang.Object + 16: [ 74/7.69KB] [ 74/7.69KB] java.net.URL + 17: [ 48/2.68KB] [ 0/ 0B] java.lang.ref.Finalizer + 18: [ 39/2.18KB] [ 39/2.18KB] sun.util.locale.LocaleObjectCache$CacheEntry + 19: [ 37/1.66KB] [ 37/1.66KB] java.io.ObjectStreamField + 20: [ 35/2.83KB] [ 35/2.83KB] sun.misc.URLClassPath$JarLoader + 21: [ 34/ 816B] [ 34/ 816B] java.io.ExpiringCache$Entry + 22: [ 32/1.79KB] [ 30/1.68KB] java.util.HashMap + 23: [ 24/16.5KB] [ 22/ 8.2KB] java.util.HashMap$Node[] + 24: [ 24/ 192B] [ 24/ 192B] java.lang.ref.ReferenceQueue$Lock + 25: [ 23/1.93KB] [ 0/ 0B] java.lang.Class$ReflectionData + 26: [ 22/ 704B] [ 22/ 704B] java.lang.ref.ReferenceQueue + 27: [ 22/ 2.5KB] [ 0/ 0B] java.lang.reflect.Constructor + 28: [ 21/1.93KB] [ 20/1.84KB] java.util.concurrent.ConcurrentHashMap + 29: [ 21/ 420B] [ 17/ 340B] java.util.jar.Attributes$Name + 30: [ 19/ 532B] [ 19/ 532B] java.util.Locale$LocaleKey + 31: [ 19/ 684B] [ 19/ 684B] java.util.Locale + 32: [ 19/ 855B] [ 19/ 855B] sun.util.locale.BaseLocale$Key + 33: [ 19/ 836B] [ 19/ 836B] sun.util.locale.BaseLocale + 34: [ 17/1.17KB] [ 14/ 966B] sun.nio.cs.UTF_8$Encoder + 35: [ 16/ 304B] [ 1/ 92B] java.lang.Class[] + 36: [ 16/3.77KB] [ 15/3.63KB] java.util.concurrent.ConcurrentHashMap$Node[] + 37: [ 15/ 2.1KB] [ 15/ 2.1KB] java.util.WeakHashMap$Entry[] + 38: [ 15/ 960B] [ 15/ 960B] java.util.WeakHashMap + 39: [ 15/ 540B] [ 15/ 540B] java.io.File + 40: [ 14/ 238B] [ 14/ 238B] sun.misc.MetaIndex + 41: [ 14/ 336B] [ 14/ 336B] java.util.ArrayList + 42: [ 13/ 780B] [ 8/ 480B] java.security.AccessControlContext + 43: [ 13/ 637B] [ 0/ 0B] java.util.zip.ZipFile$ZipFileInputStream + 44: [ 13/ 452B] [ 13/ 452B] java.io.ObjectStreamField[] + 45: [ 12/ 492B] [ 12/ 492B] java.util.zip.ZipCoder + 46: [ 12/ 288B] [ 12/ 288B] java.util.ArrayDeque + 47: [ 12/ 984B] [ 12/ 984B] java.util.jar.JarFile + 48: [ 11/ 308B] [ 0/ 0B] sun.reflect.NativeConstructorAccessorImpl + 49: [ 11/ 220B] [ 0/ 0B] java.lang.reflect.Constructor[] + 50: [ 11/ 176B] [ 0/ 0B] sun.reflect.DelegatingConstructorAccessorImpl +[...removed 228 lines...] +Total - All: 12.1K 763KB 278 classes (Total instances: 12115) +Total - Strong-ref: 7.48K 549KB 251 classes (Total instances: 7485) + +Top 10 by size: + 1: [3.45K/ 235KB] [1.92K/ 173KB] char[] + 2: [ 425/ 132KB] [ 408/ 129KB] byte[] + 3: [ 711/71.1KB] [ 711/71.1KB] java.lang.Class + 4: [3.43K/68.7KB] [1.91K/38.2KB] java.lang.String + 5: [ 632/61.7KB] [ 335/21.5KB] java.lang.Object[] + 6: [ 622/32.3KB] [ 34/1.76KB] java.util.LinkedHashMap$Entry + 7: [ 290/20.1KB] [ 128/10.3KB] java.lang.String[] + 8: [ 24/16.5KB] [ 22/ 8.2KB] java.util.HashMap$Node[] + 9: [ 358/12.8KB] [ 354/12.7KB] java.util.HashMap$Node + 10: [ 109/11.4KB] [ 0/ 0B] java.lang.reflect.Field +Unreachable objects: 1.37K 85.0KB +=================== HEAP SUMMARY ================== +Class count: 702 +Finalizable size: 8.36KB +Soft-reachable size: 120KB +Weak-reachable size: 0B +Reachable only from disposer tree: 0 +======== INSTANCES OF EACH NOMINATED CLASS ======== +Nominated classes: + --> [3.45K/235KB] char[] + --> [425/132KB] byte[] + --> [711/71.1KB] java.lang.Class + --> [3.43K/68.7KB] java.lang.String + --> [632/61.7KB] java.lang.Object[] + --> [622/32.3KB] java.util.LinkedHashMap$Entry + --> [35/2.83KB] sun.misc.URLClassPath$JarLoader + --> [39/2.18KB] sun.util.locale.LocaleObjectCache$CacheEntry + --> [17/1.17KB] sun.nio.cs.UTF_8$Encoder + --> [19/855B] sun.util.locale.BaseLocale$Key + --> [19/836B] sun.util.locale.BaseLocale + --> [6/426B] java.nio.DirectByteBuffer + +CLASS: char[] (3113 objects) +Root 1: +[1.17K/ 37%/46.2KB] 120KB 1 ROOT: Static field: java.util.ResourceBundle.cacheList +[1.17K/ 37%/46.2KB] 120KB 1 (root): java.util.concurrent.ConcurrentHashMap +[1.17K/ 37%/46.2KB] 120KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[1.17K/ 37%/46.2KB] 119KB 1 []: java.util.concurrent.ConcurrentHashMap$Node +[1.16K/ 37%/46.1KB] 119KB 1 val: java.util.ResourceBundle$BundleReference +[1.16K/ 37%/46.1KB] 119KB 1 ! (soft): sun.util.resources.TimeZoneNames +[1.16K/ 37%/46.1KB] 119KB 1 lookup: java.util.LinkedHashMap +[1.16K/ 37%/45.8KB] 118KB 1 table: java.util.HashMap$Node[] +[1.16K/ 37%/45.8KB] 108KB 422 []: java.util.LinkedHashMap$Entry +[ 501/ 16%/19.4KB] 37.2KB 122 value: java.lang.String[] +[ 501/ 16%/19.4KB] 29.9KB 501 []: java.lang.String +[ 501/ 16%/19.4KB] 19.9KB 501 * value: char[] +Root 2: +[ 600/ 19%/24.4KB] 41.8KB 1 ROOT: Static field: sun.util.calendar.ZoneInfoFile.regions +[ 600/ 19%/24.4KB] 41.8KB 1 (root): java.lang.String[] +[ 600/ 19%/24.4KB] 37.0KB 600 []: java.lang.String +[ 600/ 19%/24.4KB] 25.0KB 600 * value: char[] + +CLASS: byte[] (425 objects) +Root 1: +[ 385/ 90%/96.2KB] 99.4KB 1 ROOT: Static field: sun.util.calendar.ZoneInfoFile.ruleArray +[ 385/ 90%/96.2KB] 99.4KB 1 (root): byte[][] +[ 385/ 90%/96.2KB] 96.3KB 385 * []: byte[] +Root 2: +[ 3/ 0%/8.35KB] 25.1KB 1 ROOT: Static field: java.lang.System.err +[ 3/ 0%/8.35KB] 25.1KB 1 (root): java.io.PrintStream +[ 2/ 0%/8.21KB] 8.44KB 1 charOut: java.io.OutputStreamWriter +[ 2/ 0%/8.21KB] 8.41KB 1 se: sun.nio.cs.StreamEncoder +[ 1/ 0%/ 8.2KB] 8.25KB 1 bb: java.nio.HeapByteBuffer +[ 1/ 0%/ 8.2KB] 8.2KB 1 * hb: byte[] + +CLASS: java.lang.Class (711 objects) +Root 1: +[ 1/ 0%/ 100B] 100B 1 ROOT: Sticky class +[ 1/ 0%/ 100B] 100B 1 * (root): java.lang.Class +Root 2: +[ 1/ 0%/ 100B] 100B 1 ROOT: Class definition: [Lsun.launcher.LauncherHelper; +[ 1/ 0%/ 100B] 100B 1 * (root): java.lang.Class + +CLASS: java.lang.String (3097 objects) +Root 1: +[1.17K/ 37%/23.4KB] 120KB 1 ROOT: Static field: java.util.ResourceBundle.cacheList +[1.17K/ 37%/23.4KB] 120KB 1 (root): java.util.concurrent.ConcurrentHashMap +[1.17K/ 37%/23.4KB] 120KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[1.17K/ 37%/23.4KB] 119KB 1 []: java.util.concurrent.ConcurrentHashMap$Node +[1.16K/ 37%/23.3KB] 119KB 1 val: java.util.ResourceBundle$BundleReference +[1.16K/ 37%/23.3KB] 119KB 1 ! (soft): sun.util.resources.TimeZoneNames +[1.16K/ 37%/23.3KB] 119KB 1 lookup: java.util.LinkedHashMap +[1.16K/ 37%/23.2KB] 118KB 1 table: java.util.HashMap$Node[] +[1.16K/ 37%/23.2KB] 108KB 422 []: java.util.LinkedHashMap$Entry +[ 501/ 16%/10.0KB] 37.2KB 122 value: java.lang.String[] +[ 501/ 16%/10.0KB] 29.9KB 501 * []: java.lang.String +Root 2: +[ 600/ 19%/12.0KB] 41.8KB 1 ROOT: Static field: sun.util.calendar.ZoneInfoFile.regions +[ 600/ 19%/12.0KB] 41.8KB 1 (root): java.lang.String[] +[ 600/ 19%/12.0KB] 37.0KB 600 * []: java.lang.String + +CLASS: java.lang.Object[] (335 objects) +Root 1: +[ 292/ 87%/17.2KB] 24.4KB 1 ROOT: Static field: java.nio.charset.Charset.standardProvider +[ 292/ 87%/17.2KB] 24.4KB 1 (root): sun.nio.cs.StandardCharsets +[ 212/ 63%/14.2KB] 18.9KB 1 aliasMap: sun.nio.cs.StandardCharsets$Aliases +[ 212/ 63%/14.2KB] 18.8KB 1 ht: java.lang.Object[] +[ 211/ 62%/6.05KB] 10.6KB 193 []: java.lang.Object[] +[ 18/ 5%/ 512B] 788B 17 []: java.lang.Object[] +[ 1/ 0%/ 28B] 28B 1 * []: java.lang.Object[] +Root 2: +[ 23/ 6%/3.12KB] 54.2KB 1 ROOT: Static field: java.lang.ClassLoader.scl +[ 23/ 6%/3.12KB] 54.2KB 1 (root): sun.misc.Launcher$AppClassLoader +[ 14/ 4%/2.24KB] 31.4KB 1 ucp: sun.misc.URLClassPath +[ 12/ 3%/1.72KB] 18.1KB 1 loaders: java.util.ArrayList +[ 12/ 3%/1.72KB] 18.1KB 1 elementData: java.lang.Object[] +[ 11/ 3%/1.54KB] 13.8KB 11 []: sun.misc.URLClassPath$JarLoader +[ 11/ 3%/1.54KB] 9.3KB 11 jar: java.util.jar.JarFile +[ 11/ 3%/1.54KB] 2.07KB 11 inflaterCache: java.util.ArrayDeque +[ 11/ 3%/1.54KB] 1.81KB 11 * elements: java.lang.Object[] + +CLASS: java.util.LinkedHashMap$Entry (622 objects) +Root 1: +[ 588/ 94%/30.5KB] 120KB 1 ROOT: Static field: java.util.ResourceBundle.cacheList +[ 588/ 94%/30.5KB] 120KB 1 (root): java.util.concurrent.ConcurrentHashMap +[ 588/ 94%/30.5KB] 120KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[ 588/ 94%/30.5KB] 119KB 1 []: java.util.concurrent.ConcurrentHashMap$Node +[ 588/ 94%/30.5KB] 119KB 1 val: java.util.ResourceBundle$BundleReference +[ 588/ 94%/30.5KB] 119KB 1 ! (soft): sun.util.resources.TimeZoneNames +[ 588/ 94%/30.5KB] 119KB 1 lookup: java.util.LinkedHashMap +[ 584/ 93%/30.3KB] 118KB 1 table: java.util.HashMap$Node[] +[ 584/ 93%/30.3KB] 110KB 447 []: java.util.LinkedHashMap$Entry +[ 54/ 8%/ 2.8KB] 8.81KB 53 next: java.util.LinkedHashMap$Entry +[ 1/ 0%/ 52B] 108B 1 * next: java.util.LinkedHashMap$Entry +Root 2: +[ 34/ 5%/1.76KB] 16.9KB 1 ROOT: Static field: java.io.File.fs +[ 34/ 5%/1.76KB] 16.9KB 1 (root): java.io.UnixFileSystem +[ 32/ 5%/1.66KB] 15.6KB 1 cache: java.io.ExpiringCache +[ 32/ 5%/1.66KB] 15.6KB 1 map: java.io.ExpiringCache$1 +[ 27/ 4%/ 1.4KB] 13.2KB 1 table: java.util.HashMap$Node[] +[ 27/ 4%/ 1.4KB] 12.7KB 22 []: java.util.LinkedHashMap$Entry +[ 2/ 0%/ 104B] 1.01KB 2 * before: java.util.LinkedHashMap$Entry + +CLASS: sun.misc.URLClassPath$JarLoader (35 objects) +Root 1: +[ 30/ 85%/2.43KB] 54.2KB 1 ROOT: Static field: java.lang.ClassLoader.scl +[ 30/ 85%/2.43KB] 54.2KB 1 (root): sun.misc.Launcher$AppClassLoader +[ 20/ 57%/1.62KB] 31.4KB 1 ucp: sun.misc.URLClassPath +[ 20/ 57%/1.62KB] 18.1KB 1 loaders: java.util.ArrayList +[ 20/ 57%/1.62KB] 18.1KB 1 elementData: java.lang.Object[] +[ 20/ 57%/1.62KB] 17.7KB 20 * []: sun.misc.URLClassPath$JarLoader +Root 2: +[ 5/ 14%/ 405B] 9.42KB 1 ROOT: Static field: sun.misc.Launcher$BootClassPathHolder.bcp +[ 5/ 14%/ 405B] 9.42KB 1 (root): sun.misc.URLClassPath +[ 5/ 14%/ 405B] 5.03KB 1 loaders: java.util.ArrayList +[ 5/ 14%/ 405B] 5.01KB 1 elementData: java.lang.Object[] +[ 5/ 14%/ 405B] 4.92KB 5 * []: sun.misc.URLClassPath$JarLoader + +CLASS: sun.util.locale.LocaleObjectCache$CacheEntry (39 objects) +Root 1: +[ 19/ 48%/1.06KB] 2.7KB 1 ROOT: Static field: java.util.Locale.LOCALECACHE +[ 19/ 48%/1.06KB] 2.7KB 1 (root): java.util.Locale$Cache +[ 19/ 48%/1.06KB] 2.64KB 1 map: java.util.concurrent.ConcurrentHashMap +[ 19/ 48%/1.06KB] 2.54KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[ 19/ 48%/1.06KB] 2.28KB 16 []: java.util.concurrent.ConcurrentHashMap$Node +[ 16/ 41%/ 896B] 896B 16 * val: sun.util.locale.LocaleObjectCache$CacheEntry +Root 2: +[ 19/ 48%/1.06KB] 6.73KB 1 ROOT: Static field: sun.util.locale.BaseLocale.CACHE +[ 19/ 48%/1.06KB] 6.73KB 1 (root): sun.util.locale.BaseLocale$Cache +[ 19/ 48%/1.06KB] 6.66KB 1 map: java.util.concurrent.ConcurrentHashMap +[ 19/ 48%/1.06KB] 6.57KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[ 19/ 48%/1.06KB] 6.3KB 12 []: java.util.concurrent.ConcurrentHashMap$Node +[ 12/ 30%/ 672B] 672B 12 * val: sun.util.locale.LocaleObjectCache$CacheEntry + +CLASS: sun.nio.cs.UTF_8$Encoder (17 objects) +Root 1: +[ 12/ 70%/ 828B] 54.2KB 1 ROOT: Static field: java.lang.ClassLoader.scl +[ 12/ 70%/ 828B] 54.2KB 1 (root): sun.misc.Launcher$AppClassLoader +[ 11/ 64%/ 759B] 31.4KB 1 ucp: sun.misc.URLClassPath +[ 11/ 64%/ 759B] 18.1KB 1 loaders: java.util.ArrayList +[ 11/ 64%/ 759B] 18.1KB 1 elementData: java.lang.Object[] +[ 11/ 64%/ 759B] 13.8KB 11 []: sun.misc.URLClassPath$JarLoader +[ 11/ 64%/ 759B] 9.3KB 11 jar: java.util.jar.JarFile +[ 11/ 64%/ 759B] 1.45KB 11 zc: java.util.zip.ZipCoder +[ 11/ 64%/ 759B] 968B 11 * enc: sun.nio.cs.UTF_8$Encoder +Root 2: +[ 1/ 5%/ 69B] 25.1KB 1 ROOT: Static field: java.lang.System.err +[ 1/ 5%/ 69B] 25.1KB 1 (root): java.io.PrintStream +[ 1/ 5%/ 69B] 8.44KB 1 charOut: java.io.OutputStreamWriter +[ 1/ 5%/ 69B] 8.41KB 1 se: sun.nio.cs.StreamEncoder +[ 1/ 5%/ 69B] 88B 1 * encoder: sun.nio.cs.UTF_8$Encoder + +CLASS: sun.util.locale.BaseLocale$Key (19 objects) +Root 1: +[ 19/100%/ 855B] 6.73KB 1 ROOT: Static field: sun.util.locale.BaseLocale.CACHE +[ 19/100%/ 855B] 6.73KB 1 (root): sun.util.locale.BaseLocale$Cache +[ 19/100%/ 855B] 6.66KB 1 map: java.util.concurrent.ConcurrentHashMap +[ 19/100%/ 855B] 6.57KB 1 table: java.util.concurrent.ConcurrentHashMap$Node[] +[ 19/100%/ 855B] 6.3KB 12 []: java.util.concurrent.ConcurrentHashMap$Node +[ 12/ 63%/ 540B] 2.88KB 12 * key: sun.util.locale.BaseLocale$Key + +CLASS: sun.util.locale.BaseLocale (19 objects) +Root 1: +[ 1/ 5%/ 44B] 116B 1 ROOT: Static field: java.util.Locale.FRANCE +[ 1/ 5%/ 44B] 116B 1 (root): java.util.Locale +[ 1/ 5%/ 44B] 80B 1 * baseLocale: sun.util.locale.BaseLocale +Root 2: +[ 1/ 5%/ 44B] 80B 1 ROOT: Static field: java.util.Locale.ROOT +[ 1/ 5%/ 44B] 80B 1 (root): java.util.Locale +[ 1/ 5%/ 44B] 44B 1 * baseLocale: sun.util.locale.BaseLocale + +CLASS: java.nio.DirectByteBuffer (6 objects) +Root 1: +[ 1/ 16%/ 79B] 216B 1 ROOT: Static field: sun.misc.PerfCounter$CoreCounters.zfc +[ 1/ 16%/ 79B] 216B 1 (root): sun.misc.PerfCounter +[ 1/ 16%/ 79B] 128B 1 lb: java.nio.DirectLongBufferU +[ 1/ 16%/ 79B] 72B 1 * att: java.nio.DirectByteBuffer +Root 2: +[ 1/ 16%/ 79B] 260B 1 ROOT: Static field: sun.misc.PerfCounter$CoreCounters.rcbt +[ 1/ 16%/ 79B] 260B 1 (root): sun.misc.PerfCounter +[ 1/ 16%/ 79B] 128B 1 lb: java.nio.DirectLongBufferU +[ 1/ 16%/ 79B] 72B 1 * att: java.nio.DirectByteBuffer + +================== DISPOSER TREE ================== +============== DISPOSER TREE SUMMARY ============== +================= DISPOSED OBJECTS ================ +Count of disposed-but-strong-referenced objects: 0 + +Disposed-but-strong-referenced dominator object count: 0 +Disposed-but-strong-referenced dominator sub-graph size: 0B + +============ DOMINATOR TREE FLAME GRAPH =========== +1 +root +0 153607 0 + diff --git a/platform/platform-tests/testData/diagnostic/sample.hprof b/platform/platform-tests/testData/diagnostic/sample.hprof new file mode 100644 index 0000000000000000000000000000000000000000..56832d2813a4fec56754e2d358543c7250a5be8e GIT binary patch literal 1620289 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 z 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%0DTm`Vw($nGTA?nGaLeq~n}bIS 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𝔊{x#96*n&G=CPpv-Fj~Ssq{^pc%m& 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

kDzlvYJswYI6lVOBBPIW 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 OD_pZDwReL2D*p#^PJ=Q4 literal 0 HcmV?d00001 diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedHashMapTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedHashMapTest.kt new file mode 100644 index 000000000000..7605e7a0a5bb --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedHashMapTest.kt @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.util.FileBackedHashMap +import org.junit.After +import org.junit.Assert.* +import org.junit.Before +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.nio.channels.FileChannel +import java.nio.file.StandardOpenOption + +class FileBackedHashMapTest { + + private lateinit var map: FileBackedHashMap + private lateinit var channel: FileChannel + private val tmpFolder: TemporaryFolder = TemporaryFolder() + + @Before + fun setUp() { + tmpFolder.create() + channel = FileChannel.open(tmpFolder.newFile().toPath(), StandardOpenOption.READ, StandardOpenOption.WRITE) + map = FileBackedHashMap.createEmpty(channel, 10, 4, 4) + map.put(10).putInt(110) + map.put(11).putInt(111) + map.put(20).putInt(120) + map.put(9).putInt(19) + map.put(1000).putInt(11000) + map.put(1234).putInt(11234) + } + + @After + fun tearDown() { + channel.close() + tmpFolder.delete() + } + + @Test + fun get() { + assertEquals(110, map[10]!!.int) + assertEquals(111, map[11]!!.int) + assertEquals(110, map[10]!!.int) + assertEquals(19, map[9]!!.int) + assertEquals(11000, map[1000]!!.int) + assertNull(map[8]) + assertNull(map[18]) + assertNull(map[0]) + } + + @Test + fun put() { + map.put(1000).putInt(12000) + assertEquals(12000, map[1000]!!.int) + } + + @Test + fun containsKey() { + assertTrue(map.containsKey(10)) + assertTrue(map.containsKey(11)) + assertTrue(map.containsKey(9)) + assertFalse(map.containsKey(18)) + } +} \ No newline at end of file diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedIntListTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedIntListTest.kt new file mode 100644 index 000000000000..f1f43a6616ef --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/FileBackedIntListTest.kt @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.util.FileBackedIntList +import com.intellij.diagnostic.hprof.util.IntList +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.nio.channels.FileChannel +import java.nio.file.StandardOpenOption + +class FileBackedIntListTest { + + private lateinit var list: IntList + private lateinit var channel: FileChannel + private val tmpFolder: TemporaryFolder = TemporaryFolder() + + @Before + fun setUp() { + tmpFolder.create() + channel = FileChannel.open(tmpFolder.newFile().toPath(), StandardOpenOption.READ, StandardOpenOption.WRITE) + list = FileBackedIntList.createEmpty(channel, 10) + list[0] = 90 + list[5] = 95 + list[9] = 99 + } + + @After + fun tearDown() { + channel.close() + tmpFolder.delete() + } + + @Test + fun get() { + assertEquals(list[0], 90) + assertEquals(list[9], 99) + assertEquals(list[5], 95) + assertEquals(list[0], 90) + } + + @Test + fun getFromEmptyIndex() { + assertEquals(list[1], 0) + assertEquals(list[2], 0) + } + + @Test(expected = java.nio.BufferUnderflowException::class) + fun getOutOfBounds() { + list[10] + } + + @Test + fun set() { + list[0] = Int.MAX_VALUE + assertEquals(Int.MAX_VALUE, list[0]) + } +} \ No newline at end of file diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfBuilder.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfBuilder.kt new file mode 100644 index 000000000000..0a531682c68d --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfBuilder.kt @@ -0,0 +1,329 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.parser.ConstantPoolEntry +import com.intellij.diagnostic.hprof.parser.InstanceFieldEntry +import com.intellij.diagnostic.hprof.parser.StaticFieldEntry +import com.intellij.diagnostic.hprof.parser.Type +import com.intellij.diagnostic.hprof.util.HprofWriter +import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap +import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap +import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap +import java.io.ByteArrayOutputStream +import java.io.DataOutputStream +import java.lang.Boolean +import java.lang.Byte +import java.lang.Double +import java.lang.Float +import java.lang.Short +import java.lang.ref.SoftReference +import java.lang.ref.WeakReference +import java.lang.reflect.Array +import java.lang.reflect.Modifier +import kotlin.Any +import kotlin.ByteArray +import kotlin.IllegalArgumentException +import kotlin.IllegalStateException +import kotlin.Int +import kotlin.Long +import kotlin.LongArray +import kotlin.String +import kotlin.arrayOf +import kotlin.toRawBits + +class HProfBuilder(dos: DataOutputStream, val classNameMapping: ((Class<*>) -> String?)) { + private val objectToIdMap = Reference2LongOpenHashMap() + private val stringToIdMap = Object2LongOpenHashMap() + private val classObjectIdToClassSerialNumber = Long2IntOpenHashMap() + + private val classToObjectWithStatics = HashMap, Any>() + + private var nextStringId = 1L + private var nextObjectId = 1L + private var nextStackFrameId = 1L + private var nextStackTraceSerialNumberId = 1 + private var nextClassSerialNumber = 1 + + private val idSize = 8 + + private val writer = HprofWriter(dos, idSize, System.currentTimeMillis()) + + init { + addObject(Class::class.java) + addObject(SoftReference::class.java) + addObject(WeakReference::class.java) + } + + /** + * Static fields are ignored when the class is added to the builder. This method allows to use instance fields of an object to + * act as static fields of another class. + * + * @param clazz Class for which static fields will be added + * @param o Object which instance fields will serve as static fields + */ + fun registerStaticsForClass(clazz: Class<*>, o: Any) { + if (objectToIdMap.containsKey(clazz)) { + throw IllegalStateException("Static fields for class can only been registered before the class object is added to the builder.") + } + classToObjectWithStatics[clazz] = o + } + + public val internalWriter: HprofWriter + get() = writer + + fun addRootGlobalJNI(o: Any) { + val id = addObject(o) + writer.writeRootGlobalJNI(id, 0) + } + + fun addRootUnknown(o: Any) { + val id = addObject(o) + writer.writeRootUnknown(id) + } + + fun addRootJavaFrame(o: Any, threadSerialNumber: Int, frameIndex: Int) { + val id = addObject(o) + writer.writeRootJavaFrame(id, threadSerialNumber, frameIndex) + } + + fun addStackTrace(thread: Thread, topFramesCount: Int): Int { + val stackTrace = thread.stackTrace + val stackFrameIds = LongArray(kotlin.math.min(topFramesCount, stackTrace.size)) + for (i in stackFrameIds.indices) { + val ste = stackTrace[i] + val stackFrameId = nextStackFrameID() + stackFrameIds[i] = stackFrameId + val classObjectId = addObject(Class.forName(ste.className)) + val classSerialNumber = getClassSerialNumber(classObjectId) + writer.writeStackFrame(stackFrameId, + addString(ste.className + "." + ste.methodName), + addString("()"), + 0, + classSerialNumber, + if (ste.isNativeMethod) -1 else ste.lineNumber) + } + val stackTraceSerialNumber = nextStackTraceSerialNumberID() + writer.writeStackTrace(stackTraceSerialNumber, thread.id, stackFrameIds) + return stackTraceSerialNumber + } + + fun addObject(o: Any?): Long { + if (o == null) { + return 0 + } + if (objectToIdMap.containsKey(o)) { + return objectToIdMap.getLong(o) + } + val objectID = nextObjectID() + objectToIdMap.put(o, objectID) + + val oClass: Class<*> = o.javaClass + addObject(oClass) + + when { + o is Class<*> -> addClass(objectID, o) + oClass.isArray && oClass.componentType.isPrimitive -> addPrimitiveArray(objectID, o) + oClass.isArray -> addObjectArray(objectID, o) + else -> addInstanceObject(objectID, o) + } + return objectID + } + + private fun addPrimitiveArray(id: Long, o: Any) { + // Contents of primitive arrays are not yet supported + val elementType = Type.getType(o.javaClass.name) + val elementSize = elementType.size + + val arraySize = Array.getLength(o) + val bytes = ByteArray(arraySize * elementSize) + var curr = 0 + for (i in 0 until arraySize) { + val value = + when (elementType) { + Type.BYTE -> Array.getByte(o, i).toLong() + Type.SHORT -> Array.getShort(o, i).toLong() + Type.INT -> Array.getInt(o, i).toLong() + Type.OBJECT -> throw IllegalStateException() + Type.BOOLEAN -> if (Array.getBoolean(o, i)) 1L else 0L + Type.CHAR -> Array.getChar(o, i).toLong() + Type.FLOAT -> Float.floatToRawIntBits(Array.getFloat(o, i)).toLong() + Type.DOUBLE -> Double.doubleToRawLongBits(Array.getDouble(o, i)) + Type.LONG -> Array.getLong(o, i) + else -> throw IllegalStateException() + } + serializeToBytes(bytes, curr, value, elementType.size) + curr += elementType.size + } + + writer.writePrimitiveArrayDump(id, + 0, + elementType, + bytes, + arraySize) + } + + private fun serializeToBytes(bytes: ByteArray, offset: Int, value: Long, count: Int): Int { + var result = offset + for (i in count - 1 downTo 0) { + bytes[result++] = ((value shl (i * 8)) and 0xff).toByte() + } + return result + } + + private fun addObjectArray(id: Long, o: Any) { + val arrayClassObjectId = addObject(o.javaClass) + val length = Array.getLength(o) + val elements = LongArray(length) + + for (i in 0 until length) { + val element = Array.get(o, i) + val elementID = addObject(element) + elements[i] = elementID + } + + writer.writeObjectArrayDump(id, + 0, + arrayClassObjectId, + elements) + } + + private fun addInstanceObject(id: Long, o: Any) { + var oClass: Class<*> = o.javaClass + val classObjectId = addObject(oClass) + val baos = ByteArrayOutputStream() + DataOutputStream(baos).use { dos -> + do { + oClass.declaredFields.filter { !Modifier.isStatic(it.modifiers) }.forEach { field -> + field.isAccessible = true + + when (field.type) { + java.lang.Long.TYPE -> dos.writeLong(field.getLong(o)) + Integer.TYPE -> dos.writeInt(field.getInt(o)) + Short.TYPE -> dos.writeShort(field.getShort(o).toInt()) + Character.TYPE -> dos.writeChar(field.getChar(o).toInt()) + Byte.TYPE -> dos.writeByte(field.getByte(o).toInt()) + Boolean.TYPE -> dos.writeBoolean(field.getBoolean(o)) + Double.TYPE -> dos.writeDouble(field.getDouble(o)) + Float.TYPE -> dos.writeFloat(field.getFloat(o)) + else -> { + val refObject = field.get(o) + val refObjectId = addObject(refObject) + when (idSize) { + 8 -> dos.writeLong(refObjectId) + 4 -> dos.writeInt(refObjectId.toInt()) + else -> throw IllegalArgumentException() + } + } + } + } + oClass = oClass.superclass ?: break + } + while (true) + } + val bytes = baos.toByteArray() + writer.writeInstanceDump(id, 0, classObjectId, bytes) + } + + private fun addClass(id: Long, oClass: Class<*>) { + val superClassObjectId = addObject(oClass.superclass) + + val mappedClassName = classNameMapping(oClass) ?: oClass.name + val className = mappedClassName.replace('.', '/') + val classNameStringId = addString(className) + + objectToIdMap.put(oClass, id) + + val classSerialNumber = nextClassSerialNumber() + classObjectIdToClassSerialNumber.put(id, classSerialNumber) + writer.writeLoadClass(classSerialNumber, id, 0, classNameStringId) + + var instanceSize = 0 + val instanceFields = mutableListOf() + oClass.declaredFields.filter { !Modifier.isStatic(it.modifiers) }.forEach { field -> + instanceSize += when (field.type) { + java.lang.Long.TYPE -> 8 + Integer.TYPE -> 4 + Short.TYPE -> 2 + Character.TYPE -> 2 + Byte.TYPE -> 1 + Boolean.TYPE -> 1 + Double.TYPE -> 8 + Float.TYPE -> 4 + else -> idSize + } + when (field.type) { + java.lang.Long.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.LONG)) + Integer.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.INT)) + Short.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.SHORT)) + Character.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.CHAR)) + Byte.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.BYTE)) + Boolean.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.BOOLEAN)) + Double.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.DOUBLE)) + Float.TYPE -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.FLOAT)) + else -> instanceFields.add(InstanceFieldEntry(addString(field.name), Type.OBJECT)) + } + } + + // Constants and static fields not supported yet. + val constantPool = arrayOf() + val staticFields = mutableListOf() + + if (classToObjectWithStatics.contains(oClass)) { + val statics = classToObjectWithStatics[oClass]!! + statics.javaClass.declaredFields.filter { !Modifier.isStatic(it.modifiers) && Modifier.isPublic(it.modifiers) }.forEach { field -> + when (field.type) { + java.lang.Long.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.LONG, field.getLong(statics))) + Integer.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.INT, field.getInt(statics).toLong())) + Short.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.SHORT, field.getShort(statics).toLong())) + Character.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.CHAR, field.getChar(statics).toLong())) + Byte.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.BYTE, field.getByte(statics).toLong())) + Boolean.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.BOOLEAN, if (field.getBoolean(statics)) 1 else 0)) + Double.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.DOUBLE, field.getDouble(statics).toRawBits())) + Float.TYPE -> staticFields.add(StaticFieldEntry(addString(field.name), Type.FLOAT, field.getFloat(statics).toRawBits().toLong())) + else -> staticFields.add(StaticFieldEntry(addString(field.name), Type.OBJECT, addObject(field.get(statics)))) + } + } + } + + writer.writeClassDump(id, 0, superClassObjectId, 0, 0, 0, + instanceSize, + constantPool, + staticFields.toTypedArray(), + instanceFields.toTypedArray()) + } + + private fun nextObjectID() = nextObjectId++ + private fun nextStackFrameID() = nextStackFrameId++ + private fun nextStackTraceSerialNumberID() = nextStackTraceSerialNumberId++ + private fun nextClassSerialNumber() = nextClassSerialNumber++ + + private fun addString(string: String): Long { + if (stringToIdMap.contains(string)) return stringToIdMap.getLong(string) + val id = nextStringID() + writer.writeStringInUTF8(id, string) + stringToIdMap.put(string, id) + return id + } + + private fun getClassSerialNumber(classObjectId: Long) = classObjectIdToClassSerialNumber[classObjectId] + + private fun nextStringID() = nextStringId++ + + fun create() { + writer.flushHeapObjects() + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfEventBasedParserTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfEventBasedParserTest.kt new file mode 100644 index 000000000000..a719c6b62435 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfEventBasedParserTest.kt @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.analysis.HProfAnalysis +import com.intellij.diagnostic.hprof.analysis.analyzeGraph +import com.intellij.diagnostic.hprof.classstore.HProfMetadata +import com.intellij.diagnostic.hprof.navigator.RootReason +import com.intellij.diagnostic.hprof.parser.HProfEventBasedParser +import com.intellij.openapi.progress.util.AbstractProgressIndicatorBase +import com.intellij.testFramework.PlatformTestUtil +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.nio.channels.FileChannel +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.StandardOpenOption + +class HProfEventBasedParserTest { + + private var file: Path = Path.of(PlatformTestUtil.getPlatformTestDataPath(), "diagnostic/sample.hprof") + private val channel: FileChannel = FileChannel.open(file, StandardOpenOption.READ) + private val parser = HProfEventBasedParser(channel) + private val tmpFolder: TemporaryFolder = TemporaryFolder() + + @Before + fun setUp() { + tmpFolder.create() + } + + @After + fun tearDown() { + channel.close() + parser.close() + tmpFolder.delete() + } + + @Test + fun testIdSize() { + assertEquals(8, parser.idSize) + } + + @Test + fun testCollectRoots() { + val hprofMetadata = HProfMetadata.create(parser) + val roots = hprofMetadata.roots + var javaFrameRootsCount = 0 + val counts = Object2IntOpenHashMap() + roots.values.forEach { + if (it.javaFrame) { + javaFrameRootsCount++ + } else { + if (!counts.containsKey(it)) { + counts.put(it, 0) + } + counts.addTo(it, 1) + } + } + assertEquals(2, counts.getInt(RootReason.rootGlobalJNI)) + assertEquals(16, javaFrameRootsCount) + assertEquals(1, counts.getInt(RootReason.rootLocalJNI)) + assertEquals(2, counts.getInt(RootReason.rootMonitorUsed)) + assertEquals(0, counts.getInt(RootReason.rootNativeStack)) + assertEquals(621, counts.getInt(RootReason.rootStickyClass)) + assertEquals(0, counts.getInt(RootReason.rootThreadBlock)) + assertEquals(6, counts.getInt(RootReason.rootThreadObject)) + assertEquals(0, counts.getInt(RootReason.rootUnknown)) + } + + @Test + fun testClassStore() { + val hprofMetadata = HProfMetadata.create(parser) + val classStore = hprofMetadata.classStore + assertEquals(702, classStore.size()) + + val stringDef = classStore["java.lang.String"] + val objectDef = classStore["java.lang.Object"] + + assertEquals("java.lang.String", stringDef.name) + assertEquals("java.lang.Object", objectDef.name) + + assertEquals(0, stringDef.constantFields.size) + assertEquals(12, stringDef.instanceSize) + assertEquals(1, stringDef.refInstanceFields.size) + assertEquals(2, stringDef.objectStaticFields.size) + + assertEquals(objectDef.id, stringDef.superClassId) + assertEquals(28991101024, objectDef.id) + + assertEquals(0, objectDef.superClassId) + + assertEquals("value", stringDef.refInstanceFields[0].name) + } + + @Test + fun testReport() { + val analysis = HProfAnalysis(channel, object : HProfAnalysis.TempFilenameSupplier { + override fun getTempFilePath(type: String): Path { + return tmpFolder.newFile().toPath() + } + }, ::analyzeGraph) + analysis.setIncludeMetaInfo(false) + val progress = object : AbstractProgressIndicatorBase() { + } + progress.isIndeterminate = false + val generatedReport = analysis.analyze(progress) + val baselinePath = getBaselinePath("sample-report.txt") + val baselineReport = getBaselineContents(baselinePath) + + assertEquals("Report doesn't match the baseline from file:\n$baselinePath", + baselineReport, generatedReport) + } + + /** + * Get the contents of the baseline file, with system-dependent line endings + */ + private fun getBaselineContents(path: Path): String { + return String(Files.readAllBytes(path), StandardCharsets.UTF_8) + .replace(Regex("(\r\n|\n)"), System.lineSeparator()) + } + + private fun getBaselinePath(fileName: String) = + Path.of(PlatformTestUtil.getPlatformTestDataPath(), "diagnostic/$fileName") + +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfScenarioRunner.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfScenarioRunner.kt new file mode 100644 index 000000000000..c7366bc63b02 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfScenarioRunner.kt @@ -0,0 +1,212 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.analysis.AnalysisConfig +import com.intellij.diagnostic.hprof.analysis.AnalysisContext +import com.intellij.diagnostic.hprof.analysis.AnalyzeGraph +import com.intellij.diagnostic.hprof.analysis.ClassNomination +import com.intellij.diagnostic.hprof.classstore.HProfMetadata +import com.intellij.diagnostic.hprof.histogram.Histogram +import com.intellij.diagnostic.hprof.navigator.ObjectNavigator +import com.intellij.diagnostic.hprof.parser.HProfEventBasedParser +import com.intellij.diagnostic.hprof.util.IntList +import com.intellij.diagnostic.hprof.util.ListProvider +import com.intellij.diagnostic.hprof.util.UByteList +import com.intellij.diagnostic.hprof.util.UShortList +import com.intellij.diagnostic.hprof.visitors.RemapIDsVisitor +import com.intellij.openapi.progress.util.AbstractProgressIndicatorBase +import com.intellij.testFramework.PlatformTestUtil +import org.junit.Assert +import org.junit.rules.TemporaryFolder +import java.io.File +import java.nio.channels.FileChannel +import java.nio.charset.StandardCharsets +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.StandardOpenOption + +open class HProfScenarioRunner(private val tmpFolder: TemporaryFolder, + private val remapInMemory: Boolean) { + + val regex = Regex("^com\\.intellij\\.diagnostic\\.hprof\\..*\\\$.*\\\$") + + open fun adjustConfig(config: AnalysisConfig): AnalysisConfig = config + + open fun mapClassName(clazz: Class<*>): String { + // Simplify inner class names + return clazz.name.replace(regex, "") + } + + fun run(scenario: HProfBuilder.() -> Unit, + baselineFileName: String, + nominatedClassNames: List?) { + val hprofFile = tmpFolder.newFile() + HProfTestUtils.createHProfOnFile(hprofFile, + scenario, + { c -> mapClassName(c) }) + compareReportToBaseline(hprofFile, baselineFileName, nominatedClassNames) + } + + private fun compareReportToBaseline(hprofFile: File, baselineFileName: String, nominatedClassNames: List? = null) { + FileChannel.open(hprofFile.toPath(), StandardOpenOption.READ).use { hprofChannel -> + + val progress = object : AbstractProgressIndicatorBase() { + } + progress.isIndeterminate = false + + val parser = HProfEventBasedParser(hprofChannel) + val hprofMetadata = HProfMetadata.create(parser) + val histogram = Histogram.create(parser, hprofMetadata.classStore) + val nominatedClasses = ClassNomination(histogram, 5).nominateClasses() + + val remapIDsVisitor = if (remapInMemory) + RemapIDsVisitor.createMemoryBased() + else + RemapIDsVisitor.createFileBased(openTempEmptyFileChannel(), histogram.instanceCount) + + parser.accept(remapIDsVisitor, "id mapping") + parser.setIdRemappingFunction(remapIDsVisitor.getRemappingFunction()) + hprofMetadata.remapIds(remapIDsVisitor.getRemappingFunction()) + + val navigator = ObjectNavigator.createOnAuxiliaryFiles( + parser, + openTempEmptyFileChannel(), + openTempEmptyFileChannel(), + hprofMetadata, + histogram.instanceCount + ) + + val parentList = MemoryBackedIntList(navigator.instanceCount.toInt() + 1) + val sizesList = MemoryBackedIntList(navigator.instanceCount.toInt() + 1) + val visitedList = MemoryBackedIntList(navigator.instanceCount.toInt() + 1) + val refIndexList = MemoryBackedUByteList(navigator.instanceCount.toInt() + 1) + + val nominatedClassNamesLocal = nominatedClassNames ?: nominatedClasses.map { it.classDefinition.name } + val analysisConfig = AnalysisConfig( + perClassOptions = AnalysisConfig.PerClassOptions( + classNames = nominatedClassNamesLocal, + treeDisplayOptions = AnalysisConfig.TreeDisplayOptions.all() + ), + histogramOptions = AnalysisConfig.HistogramOptions( + includeByCount = true, + includeBySize = false, + classByCountLimit = Int.MAX_VALUE + ), + disposerOptions = AnalysisConfig.DisposerOptions( + includeDisposerTree = false, + includeDisposerTreeSummary = false, + includeDisposedObjectsDetails = false, + includeDisposedObjectsSummary = false + ), + metaInfoOptions = AnalysisConfig.MetaInfoOptions( + include = false + ), + dominatorTreeOptions = AnalysisConfig.DominatorTreeOptions( + includeDominatorTree = false + ) + ).let { adjustConfig(it) } + val analysisContext = AnalysisContext( + navigator, + analysisConfig, + parentList, + sizesList, + visitedList, + refIndexList, + histogram + ) + + val analysisReport = AnalyzeGraph(analysisContext, memoryBackedListProvider).analyze(progress).mainReport.toString() + + val baselinePath = getBaselinePath(baselineFileName) + val baseline = getBaselineContents(baselinePath) + Assert.assertEquals("Report doesn't match the baseline from file:\n$baselinePath", + baseline, + analysisReport) + } + } + + /** + * Get the contents of the baseline file, with system-dependent line endings + */ + private fun getBaselineContents(path: Path): String { + return String(Files.readAllBytes(path), StandardCharsets.UTF_8) + .replace(Regex("(\r\n|\n)"), System.lineSeparator()) + } + + /** + * Returns path to a baseline file. Baselines may be different for different runtime versions. + */ + private fun getBaselinePath(fileName: String): Path { + val javaSpecString = System.getProperty("java.specification.version") + val filenameWithPath = "diagnostic/analysis-baseline/$fileName" + val file = File(filenameWithPath) + + val name = file.nameWithoutExtension + val extension = if (file.extension != "") "." + file.extension else "" + + val javaSpecSpecificFileName = File(file.parent, "$name.$javaSpecString$extension").toString() + val javaSpecSpecificFile = Path.of(PlatformTestUtil.getPlatformTestDataPath(), javaSpecSpecificFileName); + + if (Files.exists(javaSpecSpecificFile)) { + return javaSpecSpecificFile + } + + return Path.of(PlatformTestUtil.getPlatformTestDataPath(), filenameWithPath) + } + + class MemoryBackedIntList(size: Int) : IntList { + private val array = IntArray(size) + + override fun get(index: Int): Int = array[index] + override fun set(index: Int, value: Int) { + array[index] = value + } + } + + class MemoryBackedUShortList(size: Int) : UShortList { + private val array = ShortArray(size) + + override fun get(index: Int): Int = array[index].toInt() + override fun set(index: Int, value: Int) { + array[index] = value.toShort() + } + } + + class MemoryBackedUByteList(size: Int) : UByteList { + private val array = ShortArray(size) + + override fun get(index: Int): Int = array[index].toInt() + override fun set(index: Int, value: Int) { + array[index] = value.toShort() + } + } + + object memoryBackedListProvider: ListProvider { + override fun createUByteList(name: String, size: Long) = MemoryBackedUByteList(size.toInt()) + override fun createUShortList(name: String, size: Long) = MemoryBackedUShortList(size.toInt()) + override fun createIntList(name: String, size: Long) = MemoryBackedIntList(size.toInt()) + } + + private fun openTempEmptyFileChannel(): FileChannel { + return FileChannel.open(tmpFolder.newFile().toPath(), + StandardOpenOption.READ, + StandardOpenOption.WRITE, + StandardOpenOption.CREATE, + StandardOpenOption.TRUNCATE_EXISTING, + StandardOpenOption.DELETE_ON_CLOSE) + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfTestUtils.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfTestUtils.kt new file mode 100644 index 000000000000..836be8a972a0 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HProfTestUtils.kt @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import java.io.DataOutputStream +import java.io.File +import java.io.FileOutputStream + +object HProfTestUtils { + fun createHProfOnFile(file: File, + scenario: HProfBuilder.() -> Unit, + classNameMapping: ((Class<*>) -> String)) { + FileOutputStream(file).use { fos -> + HProfBuilder(DataOutputStream(fos), classNameMapping).apply(scenario).create() + } + } + +} \ No newline at end of file diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HeapAnalysisTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HeapAnalysisTest.kt new file mode 100644 index 000000000000..ac4a03f08527 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/HeapAnalysisTest.kt @@ -0,0 +1,273 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.analysis.AnalysisConfig +import com.intellij.openapi.Disposable +import com.intellij.openapi.util.Disposer +import org.junit.After +import org.junit.Before +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.lang.ref.WeakReference + +class HeapAnalysisTest { + + private val tmpFolder: TemporaryFolder = TemporaryFolder() + private var remapInMemory: Boolean = true + + @Before + fun setUp() { + tmpFolder.create() + } + + @After + fun tearDown() { + tmpFolder.delete() + } + + private fun runHProfScenario(scenario: HProfBuilder.() -> Unit, + baselineFileName: String, + nominatedClassNames: List? = null, + classNameMapping: ((Class<*>) -> String)? = null) { + object : HProfScenarioRunner(tmpFolder, remapInMemory) { + override fun mapClassName(clazz: Class<*>): String = classNameMapping?.invoke(clazz) ?: super.mapClassName(clazz) + }.run(scenario, baselineFileName, nominatedClassNames) + } + + //@Test + fun testPathsThroughDifferentFields() { + class MyRef(val referent: Any) + class TestString(val s: String) + class TestClassB(private val b1string: TestString, private val b2string: TestString) + class TestClassA { + private val a1string = TestString("TestString") + private val a2b = TestClassB(a1string, TestString("TestString2")) + private val a3b = TestClassB(a1string, TestString("TestString3")) + } + + ReferenceStore().use { refStore -> + val scenario: HProfBuilder.() -> Unit = { + val a = TestClassA() + addRootGlobalJNI(listOf(MyRef(MyRef(MyRef(a))), + TestClassA(), + refStore.createWeakReference(TestClassA()), + refStore.createWeakReference(a))) + addRootUnknown(TestClassA()) + } + runHProfScenario(scenario, "testPathsThroughDifferentFields.txt", + listOf("TestClassB", + "TestClassA", + "TestString")) + } + } + + @Test + fun testClassNameClash() { + class MyTestClass1 + class MyTestClass2 + + val scenario: HProfBuilder.() -> Unit = { + addRootUnknown(MyTestClass1()) + addRootGlobalJNI(MyTestClass2()) + + } + val classNameMapping: (Class<*>) -> String = { c -> + if (c == MyTestClass1::class.java || + c == MyTestClass2::class.java) { + "MyTestClass" + } + else { + c.name + } + } + + runHProfScenario(scenario, "testClassNameClash.txt", + listOf("MyTestClass!1", + "MyTestClass!2"), + classNameMapping) + } + + @Test + fun testJavaFrameGCRootPriority() { + class C1 + class C2 + + val scenario: HProfBuilder.() -> Unit = { + val o1 = C1() + val o2 = C2() + addRootUnknown(o1) + val threadSerialNumber = addStackTrace(Thread.currentThread(), 2) + // This java frame should be overshadowed by root unknown + addRootJavaFrame(o1, threadSerialNumber, 1) + // This objects sole reference is from a frame + addRootJavaFrame(o2, threadSerialNumber, 1) + } + runHProfScenario(scenario, "testJavaFrameGCRootPriority.txt", + listOf("C1", "C2")) + } + + @Test + fun testIgnoreRootWithNoMatchingObject() { + class C1 + + val scenario: HProfBuilder.() -> Unit = { + addRootUnknown(C1()) + internalWriter.writeRootUnknown(999_999_999) // id without matching object + } + remapInMemory = false + runHProfScenario(scenario, "testIgnoreRootWithNoMatchingObject.txt", + listOf("C1")) + } + + //@Test + fun testDisposerTreeSummarySection() { + val objectTree = ObjectTreeTestWrapper() + + open class MyDisposable : Disposable { + override fun dispose() { + } + } + + class MyDisposableRoot : MyDisposable() + class MyDisposableChild : MyDisposable() + class MyDisposableGrandchild : MyDisposable() + + val root = MyDisposableRoot() + val child1 = MyDisposableChild() + val child2 = MyDisposableChild() + + objectTree.register(root, child1) + objectTree.register(root, MyDisposableChild()) + objectTree.register(root, child2) + + objectTree.register(child1, MyDisposableGrandchild()) + objectTree.register(child2, MyDisposableGrandchild()) + objectTree.register(root, Disposer.newDisposable()) + + objectTree.register(Disposer.newDisposable(), MyDisposableChild()) + + val scenario: HProfBuilder.() -> Unit = { + addDisposer(this, objectTree) + } + object : HProfScenarioRunner(tmpFolder, remapInMemory) { + override fun adjustConfig(config: AnalysisConfig): AnalysisConfig = configWithDisposerTreeSummaryOnly() + }.run(scenario, "testDisposerTreeSummarySection.txt", null) + } + + @Test + fun testDominatorTreeFlameGraph() { + val scenario: HProfBuilder.() -> Unit = { + abstract class N + class A(val b: N, val c : N, val d: N): N() + class B(val e: N, val f: N): N() + class C(val f: N): N() + class D(): N() + class E(val g: N): N() + class F: N() + class G(var b: N?): N() + val g = G(null) + val f = F() + val e = E(g) + val d = D() + val c = C(f) + val b = B(e, f) + val a = A(b, c, d) + g.b = b + addRootGlobalJNI(a) + } + object : HProfScenarioRunner(tmpFolder, remapInMemory) { + override fun adjustConfig(config: AnalysisConfig): AnalysisConfig = configWithDominatorTreeOnly() + }.run(scenario, "testDominatorTreeFlameGraph.txt", null) + } + + private fun configWithDisposerTreeSummaryOnly() = AnalysisConfig( + AnalysisConfig.PerClassOptions( + classNames = listOf(), + includeClassList = false, + ), + AnalysisConfig.HistogramOptions(includeByCount = false, + includeBySize = false, + includeSummary = false), + AnalysisConfig.DisposerOptions( + includeDisposerTree = false, + includeDisposerTreeSummary = true, + includeDisposedObjectsSummary = false, + includeDisposedObjectsDetails = false, + disposerTreeSummaryOptions = AnalysisConfig.DisposerTreeSummaryOptions( + nodeCutoff = 0 + ) + ), + dominatorTreeOptions = AnalysisConfig.DominatorTreeOptions( + includeDominatorTree = false, + ) + ) + + private fun configWithDominatorTreeOnly() = AnalysisConfig( + AnalysisConfig.PerClassOptions( + classNames = listOf(), + includeClassList = false, + ), + AnalysisConfig.HistogramOptions(includeByCount = false, + includeBySize = false, + includeSummary = false), + AnalysisConfig.DisposerOptions( + includeDisposerTree = false, + includeDisposerTreeSummary = false, + includeDisposedObjectsSummary = false, + includeDisposedObjectsDetails = false, + disposerTreeSummaryOptions = AnalysisConfig.DisposerTreeSummaryOptions( + nodeCutoff = 0 + ) + ), + dominatorTreeOptions = AnalysisConfig.DominatorTreeOptions( + includeDominatorTree = true, + minNodeSize = 0 + ) + ) + + + /** + * Adds disposer to the hprof. Disposer is simplified and contains only ourTree static field, all other static fields are omitted. + * + * @param objectTree @code{ObjectTreeTestWrapper} which replaces @code{Disposer.ourTree} + */ + private fun addDisposer(builder: HProfBuilder, objectTree: ObjectTreeTestWrapper) { + class DisposerStatics { + @JvmField + var ourTree = objectTree.getTree() + } + builder.registerStaticsForClass(Disposer::class.java, DisposerStatics()) + builder.addObject(Disposer::class.java) + } +} + + +/** + * Helper class to keep strong references to objects referenced by newly created weak references. + */ +private class ReferenceStore : AutoCloseable { + private val set = HashSet() + + fun createWeakReference(obj: T): WeakReference { + set.add(obj) + return WeakReference(obj) + } + + override fun close() { + set.clear() + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectLayoutAssumptionTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectLayoutAssumptionTest.kt new file mode 100644 index 000000000000..151f6bbca5d6 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectLayoutAssumptionTest.kt @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.openapi.util.Disposer +import org.junit.Assert.assertEquals +import org.junit.Test +import kotlin.reflect.KClass +import kotlin.reflect.jvm.isAccessible + +class ObjectLayoutAssumptionTest { + + @Test + fun disposerAssumptions() { + // Disposer class is in correct package + val disposerClass = Disposer::class + assertEquals("com.intellij.openapi.util.Disposer", disposerClass.qualifiedName) + + // Disposer.ourTree validation + val ourTreeClass = + disposerClass.members.first { c -> c.name == "ourTree" }.returnType.classifier as KClass<*> + assertEquals("com.intellij.openapi.util.ObjectTree", + ourTreeClass.qualifiedName) + } + + @Test + fun objectTreeAssumptions() { + val disposerClass = Disposer::class + val objectTreeInstance = + disposerClass.members.first { c -> c.name == "ourTree" }.apply { isAccessible = true }.call()!! + val myObject2NodeMapField = objectTreeInstance.javaClass.getDeclaredField("myObject2ParentNode").apply { isAccessible = true } + val map = myObject2NodeMapField.get(objectTreeInstance) + + // ObjectTree.myObject2ParentNode validation + assertEquals("it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap", map.javaClass.canonicalName) + } +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectNavigatorTest.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectNavigatorTest.kt new file mode 100644 index 000000000000..0f33180c8df4 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectNavigatorTest.kt @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.diagnostic.hprof.classstore.HProfMetadata +import com.intellij.diagnostic.hprof.histogram.Histogram +import com.intellij.diagnostic.hprof.navigator.ObjectNavigator +import com.intellij.diagnostic.hprof.parser.HProfEventBasedParser +import com.intellij.diagnostic.hprof.visitors.RemapIDsVisitor +import org.junit.After +import org.junit.Assert.assertArrayEquals +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test +import org.junit.rules.TemporaryFolder +import java.io.File +import java.nio.channels.FileChannel +import java.nio.file.StandardOpenOption +import java.util.function.LongUnaryOperator + +class ObjectNavigatorTest { + + private val tmpFolder: TemporaryFolder = TemporaryFolder() + + @Before + fun setUp() { + tmpFolder.create() + } + + @After + fun tearDown() { + tmpFolder.delete() + } + + private fun openTempEmptyFileChannel(): FileChannel { + return FileChannel.open(tmpFolder.newFile().toPath(), + StandardOpenOption.READ, + StandardOpenOption.WRITE, + StandardOpenOption.CREATE, + StandardOpenOption.TRUNCATE_EXISTING, + StandardOpenOption.DELETE_ON_CLOSE) + } + + @Test + fun testNameClash() { + val hprofFile = tmpFolder.newFile() + class MyTestClass1 { + val field: String = "" + } + class MyTestClass2 { + val field: String = "" + } + + var object1Id: Long = 0 + var object2Id: Long = 0 + + val scenario: HProfBuilder.() -> Unit = { + object1Id = addObject(MyTestClass1()) + object2Id = addObject(MyTestClass2()) + } + val classNameMapping: (Class<*>) -> String = { c -> + if (c == MyTestClass1::class.java || + c == MyTestClass2::class.java) { + "MyTestClass" + } else { + c.name + } + } + HProfTestUtils.createHProfOnFile(hprofFile, + scenario, + classNameMapping) + val (navigator, remap) = getObjectNavigatorAndRemappingFunction(hprofFile) + val clashedClassNames = ArrayList() + + // Check that each class got assigned a unique name + clashedClassNames.add(navigator.getClassForObjectId(remap.applyAsLong(object1Id)).name) + clashedClassNames.add(navigator.getClassForObjectId(remap.applyAsLong(object2Id)).name) + clashedClassNames.sort() + + assertArrayEquals(arrayOf("MyTestClass!1", "MyTestClass!2"), clashedClassNames.toArray()) + + // Verify goToInstanceField works correctly for classes with name clash + navigator.goTo(remap.applyAsLong(object1Id)) + navigator.goToInstanceField("MyTestClass", "field") + + assertEquals("java.lang.String", navigator.getClass().undecoratedName) + } + + private fun getObjectNavigatorAndRemappingFunction(hprofFile: File): Pair { + FileChannel.open(hprofFile.toPath(), StandardOpenOption.READ).use { hprofChannel -> + val parser = HProfEventBasedParser(hprofChannel) + val hprofMetadata = HProfMetadata.create(parser) + val histogram = Histogram.create(parser, hprofMetadata.classStore) + + val remapIDsVisitor = RemapIDsVisitor.createMemoryBased() + parser.accept(remapIDsVisitor, "id mapping") + parser.setIdRemappingFunction(remapIDsVisitor.getRemappingFunction()) + hprofMetadata.remapIds(remapIDsVisitor.getRemappingFunction()) + + return Pair(ObjectNavigator.createOnAuxiliaryFiles( + parser, + openTempEmptyFileChannel(), + openTempEmptyFileChannel(), + hprofMetadata, + histogram.instanceCount + ), remapIDsVisitor.getRemappingFunction()) + } + } + +} diff --git a/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectTreeTestWrapper.kt b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectTreeTestWrapper.kt new file mode 100644 index 000000000000..09ea8972a75b --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/diagnostic/hprof/ObjectTreeTestWrapper.kt @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.diagnostic.hprof + +import com.intellij.openapi.Disposable + +class ObjectTreeTestWrapper { + + private val tree: Any = treeClazz.declaredConstructors.first { it.parameterCount == 0 }.apply { isAccessible = true }.newInstance() + + fun getTree(): Any { + return tree + } + + fun register(parent: Disposable, child: Disposable) { + val method = treeClazz.getDeclaredMethod("register", Disposable::class.java, Disposable::class.java).apply { isAccessible = true } + method.invoke(tree, parent, child) + } + + companion object { + private val treeClazz = Class.forName("com.intellij.openapi.util.ObjectTree") + } +} \ No newline at end of file