From aleksey.shipilev at oracle.com Tue Apr 12 08:49:44 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Tue, 12 Apr 2016 08:49:44 +0000 Subject: hg: code-tools/jol: 2 new changesets Message-ID: <201604120849.u3C8nieu003886@aojmv0008.oracle.com> Changeset: 82442ab3c517 Author: shade Date: 2016-04-11 19:35 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/82442ab3c517 7901656: GraphLayout.parseInstance multiple roots mismatches second root as array ! jol-core/pom.xml ! jol-core/src/main/java/org/openjdk/jol/info/GraphLayout.java + jol-core/src/test/java/GraphLayoutTest.java Changeset: c4aabab04b1c Author: shade Date: 2016-04-12 11:47 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/c4aabab04b1c 7901657: ClassLayout misrepresents large array instance size ! jol-core/src/main/java/org/openjdk/jol/info/ClassData.java ! jol-core/src/main/java/org/openjdk/jol/info/ClassLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/FieldLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/GraphLayout.java ! jol-core/src/main/java/org/openjdk/jol/layouters/CurrentLayouter.java ! jol-core/src/main/java/org/openjdk/jol/layouters/HotSpotLayouter.java ! jol-core/src/main/java/org/openjdk/jol/layouters/RawLayouter.java ! jol-core/src/main/java/org/openjdk/jol/util/MathUtil.java ! jol-core/src/main/java/org/openjdk/jol/util/Multiset.java ! jol-core/src/main/java/org/openjdk/jol/util/VMSupport.java + jol-core/src/test/java/ClassLayoutTest.java ! jol-core/src/test/java/GraphLayoutTest.java From aleksey.shipilev at oracle.com Tue Apr 12 22:59:06 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Tue, 12 Apr 2016 22:59:06 +0000 Subject: hg: code-tools/jol: 7901658: Refactor VMSupport and HotSpot Serviceability Agent support Message-ID: <201604122259.u3CMx6k2009574@aojmv0008.oracle.com> Changeset: 78ff957bc500 Author: shade Date: 2016-04-13 01:58 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/78ff957bc500 7901658: Refactor VMSupport and HotSpot Serviceability Agent support ! jol-cli/pom.xml ! jol-cli/src/main/java/org/openjdk/jol/operations/ClasspathedOPeration.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/CurrentDataModel.java ! jol-core/src/main/java/org/openjdk/jol/info/ClassLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/FieldData.java ! jol-core/src/main/java/org/openjdk/jol/info/FieldLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/GraphLayout.java ! jol-core/src/main/java/org/openjdk/jol/layouters/CurrentLayouter.java - jol-core/src/main/java/org/openjdk/jol/util/HS_SA_Support.java + jol-core/src/main/java/org/openjdk/jol/util/IOUtils.java - jol-core/src/main/java/org/openjdk/jol/util/InstrumentationSupport.java + jol-core/src/main/java/org/openjdk/jol/util/ObjectUtils.java - jol-core/src/main/java/org/openjdk/jol/util/sa/HS_SA_Processor.java - jol-core/src/main/java/org/openjdk/jol/util/sa/HS_SA_Result.java - jol-core/src/main/java/org/openjdk/jol/util/sa/impl/HS_SA_Util.java - jol-core/src/main/java/org/openjdk/jol/util/sa/impl/compressedrefs/HS_SA_CompressedReferencesProcessor.java - jol-core/src/main/java/org/openjdk/jol/util/sa/impl/compressedrefs/HS_SA_CompressedReferencesResult.java + jol-core/src/main/java/org/openjdk/jol/vm/Experiments.java ! jol-core/src/main/java/org/openjdk/jol/vm/HotspotUnsafe.java < jol-core/src/main/java/org/openjdk/jol/util/VMSupport.java + jol-core/src/main/java/org/openjdk/jol/vm/InstrumentationException.java + jol-core/src/main/java/org/openjdk/jol/vm/InstrumentationSupport.java + jol-core/src/main/java/org/openjdk/jol/vm/VM.java + jol-core/src/main/java/org/openjdk/jol/vm/VMOptions.java + jol-core/src/main/java/org/openjdk/jol/vm/VirtualMachine.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/AttachMain.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/Constants.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/ProcessAttachFailedException.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/Request.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/Response.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/Result.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/SASupportException.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/ServiceabilityAgentSupport.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/Task.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/UniverseData.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/UniverseTask.java ! jol-core/src/test/java/ClassLayoutArraysTest.java < jol-core/src/test/java/ClassLayoutTest.java + jol-core/src/test/java/ClassLayoutInstanceTest.java ! jol-samples/pom.xml ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_01_Basic.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_02_Alignment.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_03_Packing.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_04_Inheritance.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_05_InheritanceBarrier.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_06_Gaps.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_07_Exceptions.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_08_Class.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_09_Contended.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_11_ClassWord.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_12_ThinLocking.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_13_BiasedLocking.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_14_FatLocking.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_15_IdentityHashCode.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_16_AL_LL.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_17_Allocation.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_18_Layouts.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_19_Promotion.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_20_Roots.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_21_Arrays.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_22_Compaction.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_23_Defragmentation.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_24_Colocation.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_24_Difference.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_25_ArrayAlignment.java From aleksey.shipilev at oracle.com Wed Apr 13 13:14:28 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Wed, 13 Apr 2016 13:14:28 +0000 Subject: hg: code-tools/jol: 7901659: Fix Instrumentation and HS SA support in Jigsaw-enabled JDK 9 EA Message-ID: <201604131314.u3DDES0W009105@aojmv0008.oracle.com> Changeset: 1e47eed5a463 Author: shade Date: 2016-04-13 16:13 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/1e47eed5a463 7901659: Fix Instrumentation and HS SA support in Jigsaw-enabled JDK 9 EA ! jol-core/src/main/java/org/openjdk/jol/vm/HotspotUnsafe.java ! jol-core/src/main/java/org/openjdk/jol/vm/InstrumentationSupport.java ! jol-core/src/main/java/org/openjdk/jol/vm/sa/AttachMain.java ! jol-core/src/main/java/org/openjdk/jol/vm/sa/Constants.java - jol-core/src/main/java/org/openjdk/jol/vm/sa/ProcessAttachFailedException.java ! jol-core/src/main/java/org/openjdk/jol/vm/sa/Request.java + jol-core/src/main/java/org/openjdk/jol/vm/sa/SenseAccessMain.java ! jol-core/src/main/java/org/openjdk/jol/vm/sa/ServiceabilityAgentSupport.java From aleksey.shipilev at oracle.com Wed Apr 13 20:43:02 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Wed, 13 Apr 2016 20:43:02 +0000 Subject: hg: code-tools/jol: 3 new changesets Message-ID: <201604132043.u3DKh2gF019159@aojmv0008.oracle.com> Changeset: bae51d978455 Author: shade Date: 2016-04-13 21:46 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/bae51d978455 7901660: ClassLayout.parseInstance(B) and ClassLayout.parseClass(A).toPrintable(B) are confusing ! jol-core/src/main/java/org/openjdk/jol/info/ClassData.java ! jol-core/src/main/java/org/openjdk/jol/info/ClassLayout.java ! jol-core/src/test/java/ClassLayoutInstanceTest.java Changeset: aedfcc4057d2 Author: shade Date: 2016-04-13 23:32 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/aedfcc4057d2 Layouter stress tests. ! jol-core/pom.xml ! jol-core/src/main/java/org/openjdk/jol/info/ClassLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/FieldLayout.java + jol-core/src/test/java/org/openjdk/jol/layouters/ClassGenerator.java + jol-core/src/test/java/org/openjdk/jol/layouters/LayouterInvariantsTest.java Changeset: dddff14259a9 Author: shade Date: 2016-04-13 23:33 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/dddff14259a9 Renames and moves. - jol-cli/src/main/java/org/openjdk/jol/operations/ClasspathedOPeration.java + jol-cli/src/main/java/org/openjdk/jol/operations/ClasspathedOperation.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectEstimates.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectExternals.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectFootprint.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectInternals.java - jol-core/src/test/java/ClassLayoutArraysTest.java - jol-core/src/test/java/ClassLayoutInstanceTest.java - jol-core/src/test/java/GraphLayoutTest.java + jol-core/src/test/java/org/openjdk/jol/info/ClassLayoutArraysTest.java + jol-core/src/test/java/org/openjdk/jol/info/ClassLayoutInstanceTest.java + jol-core/src/test/java/org/openjdk/jol/info/GraphLayoutTest.java ! jol-core/src/test/java/org/openjdk/jol/layouters/LayouterInvariantsTest.java ! jol-core/src/test/java/org/openjdk/jol/util/ClassGenerator.java < jol-core/src/test/java/org/openjdk/jol/layouters/ClassGenerator.java From aleksey.shipilev at oracle.com Thu Apr 14 12:25:28 2016 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Thu, 14 Apr 2016 15:25:28 +0300 Subject: [PATCH] 7901019: jol estimates do not take AllocationStyle into the account In-Reply-To: <56A6B258.1080807@gmail.com> References: <56A2029B.5080909@oracle.com> <56A653F0.4060708@oracle.com> <56A6B258.1080807@gmail.com> Message-ID: <570F8C38.9040801@oracle.com> Hi, On 26.01.2016 02:40, ????? ?????????? wrote: > Sent via thunderbird, seems it is now text/plain. This is a good patch, but unfortunately it does not pass the new Layouter tests, even after fixing a few obvious bugs. See the patch against the current codebase: http://cr.openjdk.java.net/~shade/7901019/AllocationStyle.patch Would you please look at it, and make sure the tests pass? -Aleksey From aleksey.shipilev at oracle.com Thu Apr 14 17:14:58 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Thu, 14 Apr 2016 17:14:58 +0000 Subject: hg: code-tools/jol: 2 new changesets Message-ID: <201604141714.u3EHEx5R011128@aojmv0008.oracle.com> Changeset: 73b857ab8da9 Author: shade Date: 2016-04-14 19:09 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/73b857ab8da9 7901661: Unable to introspect cross-module private members in Jigsaw-enabled JDK 9 EA ! jol-core/src/main/java/org/openjdk/jol/info/GraphLayout.java ! jol-core/src/main/java/org/openjdk/jol/info/GraphPathRecord.java ! jol-core/src/main/java/org/openjdk/jol/info/GraphWalker.java + jol-core/src/test/java/org/openjdk/jol/info/ClassLayoutPrivatesTest.java Changeset: 85ac5fa4507c Author: shade Date: 2016-04-14 20:14 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/85ac5fa4507c Minor updates in Samples. ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_05_InheritanceBarrier.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_06_Gaps.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_22_Compaction.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_23_Defragmentation.java ! jol-samples/src/main/java/org/openjdk/jol/samples/JOLSample_24_Colocation.java From aleksey.shipilev at oracle.com Thu Apr 14 17:36:15 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Thu, 14 Apr 2016 17:36:15 +0000 Subject: hg: code-tools/jol: Amend 7901661 with more setAccessible checks. Message-ID: <201604141736.u3EHaG2T020093@aojmv0008.oracle.com> Changeset: 00aeaffe24ea Author: shade Date: 2016-04-14 20:36 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/00aeaffe24ea Amend 7901661 with more setAccessible checks. ! jol-cli/src/main/java/org/openjdk/jol/operations/ClasspathedOperation.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectExternals.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectFootprint.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectInternals.java From aleksey.shipilev at oracle.com Fri Apr 15 11:11:02 2016 From: aleksey.shipilev at oracle.com (Aleksey Shipilev) Date: Fri, 15 Apr 2016 14:11:02 +0300 Subject: JOL 0.5 Message-ID: <5710CC46.5070301@oracle.com> Hi, JOL 0.5 is released and available at Maven Central (thanks to Evgeny Mandrikov, as always!). This is a major release, and includes the following changes: * Jigsaw compatibility. JOL now works with latest JDK 9 EA without significant problems. Notably, this required us to refactor our Instrumentation and HotSpot Serviceability Agent support, and do other minor touchups: https://bugs.openjdk.java.net/browse/CODETOOLS-7901658 https://bugs.openjdk.java.net/browse/CODETOOLS-7901659 https://bugs.openjdk.java.net/browse/CODETOOLS-7901661 * Large arrays sizes were misrepresented (int overflows :/). Changing sizes to longs all around JOL makes this an incompatible API change, and users that depend on this library would have to adjust. Bug: https://bugs.openjdk.java.net/browse/CODETOOLS-7901657 * GraphLayout.parseInstance(arr1, arr2) mismatches second argument as varargs array. We now do accept single-argument, or varargs-argument parseInstance (this would require casting arrays to Objects explicitly in some cases): https://bugs.openjdk.java.net/browse/CODETOOLS-7901656 * CLassLayout.parseClass(A).toPrintable(B) was "okay" with instance B not being a compatible with class A, producing garbage output. Fixed: https://bugs.openjdk.java.net/browse/CODETOOLS-7901660 * JOL Samples updates. Make sure you read them and understand them before interpreting JOL results! http://hg.openjdk.java.net/code-tools/jol/file/tip/jol-samples/src/main/java/org/openjdk/jol/samples/ As usual, a fully runnable JAR is available on Central: http://central.maven.org/maven2/org/openjdk/jol/jol-cli/0.5/jol-cli-0.5-full.jar Enjoy! -Aleksey From aleksey.shipilev at oracle.com Fri Apr 15 11:11:21 2016 From: aleksey.shipilev at oracle.com (aleksey.shipilev at oracle.com) Date: Fri, 15 Apr 2016 11:11:21 +0000 Subject: hg: code-tools/jol: 3 new changesets Message-ID: <201604151111.u3FBBLPE027100@aojmv0008.oracle.com> Changeset: 2544be35bf3a Author: shade Date: 2016-04-14 20:37 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/2544be35bf3a JOL v0.5. ! jol-cli/pom.xml ! jol-core/pom.xml ! jol-samples/pom.xml ! pom.xml Changeset: 1b7592a77279 Author: shade Date: 2016-04-14 20:37 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/1b7592a77279 Added tag 0.5 for changeset 2544be35bf3a ! .hgtags Changeset: 7bf2496e895b Author: shade Date: 2016-04-14 20:37 +0300 URL: http://hg.openjdk.java.net/code-tools/jol/rev/7bf2496e895b Continue in 0.6-SNAPSHOT. ! jol-cli/pom.xml ! jol-core/pom.xml ! jol-samples/pom.xml ! pom.xml