Tool for parsing GC logs

Related tags

JSON gctoolkit
Overview

Microsoft GCToolKit

GCToolkit is a set of libraries for analyzing HotSpot Java garbage collection (GC) log files. The toolkit parses GC log files into discrete events and provides an API for aggregating data from those events. This allows the user to create arbitrary and complex analyses of the state of managed memory in the Java Virtual Machine (JVM) represented by the garbage collection log.

For more detail you can read our Launch Blog Post.

GCToolKit build with Maven


Introduction

Managed memory in the Java Virtual Machine (JVM) is comprised of 3 main pieces:

  1. Memory buffers known as Java heap
  2. Allocators which perform the work of getting data into Java heap
  3. Garbage Collection (GC).

While GC is responsible for recovering memory in Java heap that is no longer in use, the term is often used as a euphemism for memory management. The phrasing of Tuning GC or tuning the collector are often used with the understanding that it refers to tuning the JVM’s memory management subsystem. The best source of telemetry data for tuning GC comes from GC Logs and GCToolKit has been helpful in making this task easier by providing parsers, models and an API to build analytics with. You can run the Maven project HeapOccupancyAfterCollectionSummary sample as an example of this.

Prerequisite for Building GCTooKit

The gctoolkit build relies on test data which is archived in GitHub Packages. This requires you to authenticate to GitHub packages with a personal access token (PAT) to build and test.

If your organization uses Single Sign-On (SSO), also follow the directions under Authorizing a personal access token for use with SAML single sign-on.

You must also add github as a server in your ~/.m2/settings.xml file. Replace USERNAME with your GitHub user name and TOKEN with your PAT.

    <server>
      <id>github</id>
      <username>USERNAME</username>
      <password>TOKEN</password>
    </server>

Getting Started

Maven Coordinates

The GCToolKit artifacts are in GitHub packages. To use the GCToolKit artifacts as dependencies in your project, github must be added as a repository in your POM file.

<repository>
    <id>github</id>
    <name>GCToolKit packages</name>
    <url>https://maven.pkg.github.com/microsoft/*</url>
</repository>
<dependency>
    <groupId>com.microsoft.gctoolkit</groupId>
    <artifactId>api</artifactId>
    <version>2.0.1</version>
</dependency>

<dependency>
    <groupId>com.microsoft.gctoolkit</groupId>
    <artifactId>parser</artifactId>
    <version>2.0.1</version>
</dependency>

<dependency>
    <groupId>com.microsoft.gctoolkit</groupId>
    <artifactId>vertx</artifactId>
    <version>2.0.1</version>
</dependency>

Example

See sample/README

Build and Test

The build is vanilla Maven.

  • mvn clean - remove build artifacts
  • mvn compile - compile the source code
  • mvn test - run unit tests (this project uses TestNG)
  • mvn package - build the .jar files

Additional build properties

  • skipUnpack - boolean. Defaults to false. This tells the build to skip unpacking the gctoolkit-testdata logs. If the test data has already be extracted to the gclogs directory, setting this property to true can save a minute or so of build time.

Contributing

See CONTRIBUTING for full details.

License

Microsoft GCToolKit is licensed under the MIT license.

Comments
  • Best practice unit test module structure

    Best practice unit test module structure

    Following what I believe are "best practices" for JPMS, I believe that the unit tests should not be in a module, and should be in the same package as what is being tested. Furthermore, the module-info.java file should not refer to test modules. I base this belief that this is the best practice on the OpenJDK/jdk not exporting to test modules in any of their modules. I also base it on my own experience in creating the framework for my Dynamic Proxies in Java book samples. When I created those sample, I had input from folks from Jetty and Maven, and I believe that my structure is a better approach than what is currently used in gctoolkit. Lastly, I looked at the structure of Jetty this morning, particularly the server module and that also follows the same structure I am proposing here.

    Note that the module-info.java files now only export to other non-test modules in our project. Where we need to access non-exported packages, we do so with an added --add-opens inside the pom.xml file. This also follows best practices of the Jetty project and my book samples.

    enhancement 
    opened by kabutz 14
  • Cleanup

    Cleanup

    Looking at the code, I noticed loads of places where fields were not marked as final, but could have been. This is confusing when maintaining, because it is not clear what fields are changed later in the code.

    enhancement 
    opened by kabutz 13
  • Rename module names to start with `com.microsoft.`

    Rename module names to start with `com.microsoft.`

    As requestd by @brunoborges https://twitter.com/brunoborges/status/1423503746995298304 😉

    Rename module names to start with com.microsoft., in order to follow the reverse-DNS style pattern. Find more information and detailed reasonings here: https://blog.joda.org/2017/04/java-se-9-jpms-module-naming.html

    Nice side-effect: their Maven coordinates will be automatically mapped by https://github.com/sormuras/modules

    Deliverables:

    • [x] Rename main module names and their usages (i.e. requires directives)
      • [x] From gctoolkit.api to com.microsoft.gctoolkit.api
      • [x] From gctoolkit.parser to com.microsoft.gctoolkit.parser
      • [x] From gctoolkit.vertx to com.microsoft.gctoolkit.vertx
    • [x] Update test modules to read new main module names
    • [x] ~~Rename test module names~~
    • [x] Rename sample module from gctoolkit.sample to com.microsoft.gctoolkit.sample
    • [x] Update module snippet here https://devblogs.microsoft.com/java/introducing-microsoft-gctoolkit
    enhancement 
    opened by sormuras 13
  • mvn site plugin fails with an NPE on license report generation

    mvn site plugin fails with an NPE on license report generation

    To reproduce uncomment the license plugin in the reporting section and run mvnw site

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site) on project gctoolkit: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed.: NullPointerException -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site) on project gctoolkit: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:566)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed.
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:566)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
    Caused by: java.lang.NullPointerException
        at java.util.HashSet.<init> (HashSet.java:119)
        at org.codehaus.mojo.license.api.ResolvedProjectDependencies.<init> (ResolvedProjectDependencies.java:50)
        at org.codehaus.mojo.license.AbstractThirdPartyReportMojo.createThirdPartyDetails (AbstractThirdPartyReportMojo.java:559)
        at org.codehaus.mojo.license.AggregatorThirdPartyReportMojo.createThirdPartyDetails (AggregatorThirdPartyReportMojo.java:127)
        at org.codehaus.mojo.license.AbstractThirdPartyReportMojo.executeReport (AbstractThirdPartyReportMojo.java:420)
        at org.apache.maven.reporting.AbstractMavenReport.generate (AbstractMavenReport.java:251)
        at org.apache.maven.plugins.site.render.ReportDocumentRenderer.renderDocument (ReportDocumentRenderer.java:230)
        at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render (DefaultSiteRenderer.java:349)
        at org.apache.maven.plugins.site.render.SiteMojo.renderLocale (SiteMojo.java:198)
        at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:147)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
        at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
        at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
        at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
        at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
        at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke (Method.java:566)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
        ```
    bug help wanted 
    opened by karianna 12
  • Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:unpack (download-test-logs) on project gctoolkit: Unable to find/resolve artifact.

    Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:unpack (download-test-logs) on project gctoolkit: Unable to find/resolve artifact.

    Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:unpack (download-test-logs) on project gctoolkit: Unable to find/resolve artifact.

    bug documentation 
    opened by andotorg 12
  • mvn test fails

    mvn test fails

    Not sure if you're fully released yet, but mvn test currently fails:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:unpack (download-test-logs) on project gctoolkit: Unable to find/resolve artifact.: Failed to read artifact descriptor for com.microsoft.gctoolkit:gctoolkit-gclogs:zip:1.0.1: Could not transfer artifact com.microsoft.gctoolkit:gctoolkit-gclogs:pom:1.0.1 from/to github (https://maven.pkg.github.com/microsoft/): authentication failed for https://maven.pkg.github.com/microsoft//com/microsoft/gctoolkit/gctoolkit-gclogs/1.0.1/gctoolkit-gclogs-1.0.1.pom, status: 401 Unauthorized -> [Help 1]

    bug 
    opened by kittylyst 12
  • ZGC memory size without unit check

    ZGC memory size without unit check

    I find gctoolkit get the raw memory size in ZGCParser.java without the unit check. I think the line liked markStart[index] = trace.getLongGroup(2); should change to markStart[index] = trace.getMemoryInKBytes(2); . However, the lowest heap size of ZGC is 2MB,is the Mb will more suitable than the Kb?

    question 
    opened by ZhangShushu123 9
  • Gctoolkit can not analyze the timeOfLastEvent properly

    Gctoolkit can not analyze the timeOfLastEvent properly

    In preunified CMS log, the last event will be a ParNew Event. However, the mailbox in GCToolkitVert is CMS_TENURED_POOL_PARSER_OUTBOX which is defined in initMailBox.

    bug 
    opened by ZhangShushu123 8
  • ParallelJVMConfigurationTest is failing

    ParallelJVMConfigurationTest is failing

    [INFO] Running com.microsoft.gctoolkit.parser.test.diary.ParallelJVMConfigurationTest
    [ERROR] Tests run: 6, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 3.675 s <<< FAILURE! - in com.microsoft.gctoolkit.parser.test.diary.ParallelJVMConfigurationTest
    [ERROR] com.microsoft.gctoolkit.parser.test.diary.ParallelJVMConfigurationTest.testForDetailsTenuring  Time elapsed: 1.136 s  <<< FAILURE!
    org.opentest4j.AssertionFailedError: ps/details/tenuring/p_app_02_gc.log.zip, calculated: false, expected: true ==> expected: <true> but was: <false>
            at [email protected]/com.microsoft.gctoolkit.parser.test.diary.ParallelJVMConfigurationTest.testForDetailsTenuring(ParallelJVMConfigurationTest.java:37)
    
    bug invalid 
    opened by brunoborges 8
  • [ZGC] Add GC ID to the ZGCCycle

    [ZGC] Add GC ID to the ZGCCycle

    The GC id can be useful when analyzing data and may be valuable to users. It can help order data later or give an indication of how many GC cycles have happened since since the process start or between points in time.

    I've plumbed the GC id from the ZGCParser through to the ZGCCycle class. It'll be captured as part of the cycle start regex.

    opened by j-bahr 7
  • Please give us feedback on how we are doing as maintainers!

    Please give us feedback on how we are doing as maintainers!

    We’d like to hear from you the members of the community in this repo to learn how we were doing as maintainers.

    Whether you've been involved for some time or you're relatively new please tell us about your experience participating and contributing to the project. It should only take a few minutes, and you can answer for up to 3 repos:

    https://www.surveymonkey.com/r/8QTQTGJ?Source=gctoolkit

    question 
    opened by karianna 7
  • Update dependencies, plugins, maven site config

    Update dependencies, plugins, maven site config

    • Update directory plugin
    • test signing
    • revert typo used when testing signing
    • Update dependencies and add PMD and Spotbugs rules
    • Update Maven Wrapper and fix running Spotbugs and PMD via mvn site
    opened by karianna 0
  • Consider checking for keywords in commit messages to align with JReleaser syntax for Release notes

    Consider checking for keywords in commit messages to align with JReleaser syntax for Release notes

    JReleaser follows an open std on parsing commit messages for keywords that it uses to nicely produce release notes. Consider enforcing this vi a GHAction that checks messages.

    enhancement 
    opened by karianna 0
  • NPE in c.m.g.sample.aggregation.HeapOccupancyAfterCollection.extractHeapOccupancy

    NPE in c.m.g.sample.aggregation.HeapOccupancyAfterCollection.extractHeapOccupancy

    Don't dismiss as 'it's only a sample' as this may expose some underlying problem, or expose some lack of coverage in unit testing.

    Describe the bug 022-10-31T20:35:27.3983818Z [INFO] Running com.microsoft.gctoolkit.integration.core.PreunifiedJavaVirtualMachineConfigurationTest 2022-10-31T20:35:27.9909813Z Oct 31, 2022 8:35:27 PM com.microsoft.gctoolkit.vertx.aggregator.AggregatorVerticle lambda$record$0 2022-10-31T20:35:27.9910852Z WARNING: Error in aggregator 2022-10-31T20:35:27.9912261Z java.lang.NullPointerException 2022-10-31T20:35:27.9913483Z at [email protected]/com.microsoft.gctoolkit.sample.aggregation.HeapOccupancyAfterCollection.extractHeapOccupancy(HeapOccupancyAfterCollection.java:27) 2022-10-31T20:35:27.9914614Z at [email protected]/com.microsoft.gctoolkit.aggregator.JVMEventDispatcher.dispatch(JVMEventDispatcher.java:77) 2022-10-31T20:35:27.9915751Z at [email protected]/com.microsoft.gctoolkit.aggregator.Aggregator.consume(Aggregator.java:118) 2022-10-31T20:35:27.9916766Z at [email protected]/com.microsoft.gctoolkit.vertx.aggregator.AggregatorVerticle$AggregatorWrapper.consume(AggregatorVerticle.java:38) 2022-10-31T20:35:27.9975222Z at [email protected]/com.microsoft.gctoolkit.vertx.aggregator.AggregatorVerticle.lambda$record$0(AggregatorVerticle.java:105) 2022-10-31T20:35:27.9975883Z at java.base/java.lang.Iterable.forEach(Iterable.java:75) 2022-10-31T20:35:27.9976860Z at [email protected]/com.microsoft.gctoolkit.vertx.aggregator.AggregatorVerticle.record(AggregatorVerticle.java:103) 2022-10-31T20:35:27.9977761Z at [email protected]/com.microsoft.gctoolkit.vertx.aggregator.AggregatorVerticle.lambda$start$2(AggregatorVerticle.java:137) 2022-10-31T20:35:27.9978422Z at [email protected]/io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:264) 2022-10-31T20:35:27.9979046Z at [email protected]/io.vertx.core.eventbus.impl.MessageConsumerImpl.dispatch(MessageConsumerImpl.java:177) 2022-10-31T20:35:27.9979717Z at [email protected]/io.vertx.core.eventbus.impl.HandlerRegistration$InboundDeliveryContext.execute(HandlerRegistration.java:137) 2022-10-31T20:35:27.9980354Z at [email protected]/io.vertx.core.eventbus.impl.DeliveryContextBase.next(DeliveryContextBase.java:72) 2022-10-31T20:35:27.9980912Z at [email protected]/io.vertx.core.eventbus.impl.DeliveryContextBase.dispatch(DeliveryContextBase.java:43) 2022-10-31T20:35:27.9981541Z at [email protected]/io.vertx.core.eventbus.impl.HandlerRegistration.dispatch(HandlerRegistration.java:98) 2022-10-31T20:35:27.9982183Z at [email protected]/io.vertx.core.eventbus.impl.MessageConsumerImpl.deliver(MessageConsumerImpl.java:183) 2022-10-31T20:35:27.9982798Z at [email protected]/io.vertx.core.eventbus.impl.MessageConsumerImpl.doReceive(MessageConsumerImpl.java:168) 2022-10-31T20:35:27.9983426Z at [email protected]/io.vertx.core.eventbus.impl.HandlerRegistration.lambda$receive$0(HandlerRegistration.java:49) 2022-10-31T20:35:27.9984033Z at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) 2022-10-31T20:35:27.9984658Z at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) 2022-10-31T20:35:27.9985244Z at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) 2022-10-31T20:35:27.9985794Z at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) 2022-10-31T20:35:27.9986383Z at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) 2022-10-31T20:35:27.9986985Z at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 2022-10-31T20:35:27.9987520Z at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 2022-10-31T20:35:27.9987997Z at java.base/java.lang.Thread.run(Thread.java:829) To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    bug good first issue 
    opened by dsgrieve 0
  • Add messaging API to api module

    Add messaging API to api module

    Current implementation has a circular dependency because we are too tightly coupled to vert.x. Adding this API will break the code coupling which can lead to a further refactoring.

    This is important before we add new features like GenShen and GenZGC parsing.

    enhancement 
    opened by karianna 1
  • Revisit G1PauseEvent and a G1RealPauseEvent

    Revisit G1PauseEvent and a G1RealPauseEvent

    From Kirk Pepperdine:

    I've noted that there is a G1PauseEvent and a G1RealPauseEvent... and for the life of me I don't know why the RealPause is in the hierarchy.. I think it can be safely removed.

    enhancement 
    opened by karianna 0
Releases(early-access)
  • early-access(Jan 3, 2023)

    Changelog

    ♻️ Changes

    • 3b791f9 Tidied up the map and iteration (#249)
    • Tidied up the map and iteration (kabutz)

    Contributors

    We'd like to thank the following people for their contributions:

    • kabutz
    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.11(Nov 4, 2022)

    Changelog

    🔀 Merge

    • 90acfa3 Merge branch 'main' of github.com:microsoft/gctoolkit (Kirk Pepperdine)

    ♻️ Changes

    • 0ef6029 Bump jreleaser version (#240)
    • Update all plugins and dependencies to latest (David Grieve)
    • 06f8cfc Bump jreleaser version (#239) (David Grieve)
    • 0fc2263 Update all plugins and dependencies to latest (#238) (Martijn Verburg)
    • 76a1ca6 Fix breaking test (#231)
    • add/fix tests (Kirk Pepperdine)
    • 97663a0 Consolidate utility method (#230)
    • add/fix tests (Kirk Pepperdine)
    • c039fff [ZGC] Add GC ID to the ZGCCycle (#229)

    The GC id can be useful when analyzing data and may be valuable to users. It can help order data later or give an indication of how many GC cycles have happened since since the process start or between points in time. (Jeff Bahr)

    • cbb52a8 [ZGC] Improve parsing for Java 17 style output (#228)

    ZGC was marked production ready in Java 17. There were a number of changes made to the ZGC log output in the past 2-3 years that have made it into the 17 release. I've updated the tests with samples from a Java 17 run on a sample app to test changes made to the ZGCCycle class. Java sample app was invoked with the following flag -Xlog:gc=info,gc+start=info,gc+phases=info,gc+load=info,gc+mmu=info,gc+marking=info,gc+metaspace=info,gc+nmethod=info,gc+ref=info,gc+reloc=info,gc+heap=info:file=/logs/gclog:level,tags,uptime:filecount=10,filesize=250m (Jeff Bahr)

    • cec86bf [ZGC][parser] Ensure that ZGCMemoryPoolSummary and OccupancySummary use kilobytes (#227)
    • [zgc][parser] Ensure that ZGCMemoryPoolSummary and OccupancySummary receive values normalized to kilobytes. The code in its current form will return a double without taking into account the units associated with the memory. This can lead to multiple GC cycles that report odd results. This diff ensures that as they are parsed the are normalized to a long in terms of kilobytes (Jeffrey Bahr)
    • 4003f05 remove gc-all-info.log.zip from SingleGarbageCollectionLogFileTest (#223)
    • remove unified/g1gc/gc-all-info.log.zip from SingleGarbageCollectionLogFileTest (David Grieve)

    • d4a7ef3 bug: add/fix test for Zipped GC log (Kirk Pepperdine)
    • 8498c64 bug: JDK 8 G1 remark doesn't report on heap occupancy (Kirk Pepperdine)
    • 0029408 bug: DateTimeStamp.equals fixed to account for the realities of GC logging (Kirk Pepperdine)

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.10(Apr 22, 2022)

    Changelog

    🔀 Merge

    • c478a62 Merge branch 'main' of github.com:microsoft/gctoolkit (Kirk Pepperdine)

    🔄️ Changes

    • 99f423c remove unused code (Kirk Pepperdine)

    ♻️ Changes

    • 5d7646d Look for specific constructors in GCToolkitVertexParameters#createAggregator (#216) (David Grieve)

    • 58fee5a bug: preunified start time was not being set properly (Kirk Pepperdine)
    • 6cea993 bug: Diary was getting time of first collection set properly from the diarizer (Kirk Pepperdine)

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.9(Apr 8, 2022)

    Changelog

    🔀 Merge

    • 4c0c81a Merge branch 'main' of github.com:microsoft/gctoolkit (Kirk Pepperdine)

    🔄️ Changes

    • 39545f5 add in runtime to JVMTerminationEvent. Issue #126 (Kirk Pepperdine)

    ♻️ Changes

    • 5ebf00e Update plugins and dependencies to latest versions (#215) (Martijn Verburg)

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.8(Mar 11, 2022)

    Changelog

    ♻️ Changes

    • 09b3b2f bug: fix to issue #213, isParallel returns the wrong value (Kirk Pepperdine)
    • e0eabd2 fix G1GC JVM tenured summary calculate (#144) (#210) (DreamLettuce)

    • 32a20fc merge: fix conflicts with main branch (Kirk Pepperdine)
    • f9e44e9 refactoring of JavaVirtualMachine (Kirk Pepperdine)

    Contributors

    We'd like to thank the following people for their contributions:

    • DreamLettuce
    • Kirk Pepperdine (@kcpeppe)
    • xuanfei
    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.7(Feb 8, 2022)

    Changelog

    ♻️ Changes

    • deb7471 Datetime (#207) (Kirk Pepperdine)
    • c051653 Datetime (#206) (Kirk Pepperdine)

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
  • gctoolkit-2.0.6(Feb 4, 2022)

    Changelog

    🔀 Merge

    • 4f663b5 Merge branch 'main' of github.com:microsoft/gctoolkit (Kirk Pepperdine)

    🐛 Fixes

    • 5405495 add UnifiedJavaVirtualMachine to modulo-info (#202) (Yifeng Jin)

    🛠 Build

    • b3c3052 correct title for github action (Kirk Pepperdine)
    • 350582e add in publish pre-release notes (Kirk Pepperdine)
    • 6b09e2e integrate in jReleaser (www.jreleaser.org) (Kirk Pepperdine)

    ♻️ Changes

    • 5e1274b Datetime (#204) (Kirk Pepperdine)
    • 6c35262 Update README.md (#195) (jkost)
    • 8cfddd2 fix dead loop(#183) (#189) (ZhangShushu123)

    • 6ca506d Create codeql-analysis.yml (Bruno Borges)
    • 754f566 documentation: add in developers guide (Kirk Pepperdine)

    Contributors

    We'd like to thank the following people for their contributions:

    Source code(tar.gz)
    Source code(zip)
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
Source code of APK-Explorer-Editor (AEE), an open-source tool to explore the contents of an installed APK!

APK Explorer & Editor (AEE) APK Explorer & Editor, an open-source tool to explore the contents of an installed APK, is strictly made with an aim to in

APK Explorer & Editor 271 Jan 8, 2023
osc2checker is a grammar check tool for ASAM OpenSCENARIO 2 scenario files.

51WORLD OpenSCENARIO2 Grammar Checker (osc2checker) osc2checker is a grammar check tool for ASAM OpenSCENARIO 2 scenario files. It's implemented by AN

51Sim-One 14 Dec 7, 2022
A simple JAVA HTTP requests tool.

JAVA-HTTP Hello ?? I made this very simple tool to start studying HTTP requests in JAVA. You need JAVA 18 to be able to test it: Download JAVA Functio

Ghost 9 Oct 16, 2022
Tool for parsing GC logs

Microsoft GCToolKit GCToolkit is a set of libraries for analyzing HotSpot Java garbage collection (GC) log files. The toolkit parses GC log files into

Microsoft 1.2k Jan 2, 2023
Java annotation-based framework for parsing Git like command line structures

Airline Airline is a Java annotation-based framework for parsing Git like command line structures. Latest release is 0.8, available from Maven Central

null 847 Nov 26, 2022
Command line parsing framework for Java

JCommander This is an annotation based parameter parsing framework for Java 8. Here is a quick example: public class JCommanderTest { @Parameter

Cedric Beust 1.8k Dec 29, 2022
A Java library for parsing and building iCalendar data models

iCal4j - iCalendar parser and object model Table of Contents Introduction - What is iCal4j? Setup - Download and installation of iCal4j System require

iCal4j 637 Jan 5, 2023
Screaming fast JSON parsing and serialization library for Android.

#LoganSquare The fastest JSON parsing and serializing library available for Android. Based on Jackson's streaming API, LoganSquare is able to consiste

BlueLine Labs 3.2k Dec 18, 2022
Java library for representing, parsing and encoding URNs as in RFC2141 and RFC8141

urnlib Java library for representing, parsing and encoding URNs as specified in RFC 2141 and RFC 8141. The initial URN RFC 2141 of May 1997 was supers

SLUB 24 May 10, 2022
A Java library for quickly and efficiently parsing and writing UUIDs

fast-uuid fast-uuid is a Java library for quickly and efficiently parsing and writing UUIDs. It yields the most dramatic performance gains when compar

Jon Chambers 142 Jan 1, 2023
Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.

Please see https://repo1.maven.org/maven2/org/parboiled/ for download access to the artifacts https://github.com/sirthias/parboiled/wiki for all docum

Mathias 1.2k Dec 21, 2022
Cron utils for parsing, validations and human readable descriptions as well as date/time interoperability.

cron-utils We define crons. And support them. cron-utils is a Java library to define, parse, validate, migrate crons as well as get human readable des

jmrozanec 965 Dec 30, 2022
Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.

Please see https://repo1.maven.org/maven2/org/parboiled/ for download access to the artifacts https://github.com/sirthias/parboiled/wiki for all docum

Mathias 1.2k Dec 21, 2022
Java/JNI bindings to libpostal for for fast international street address parsing/normalization

jpostal These are the Java/JNI bindings to libpostal, a fast, multilingual NLP library (written in C) for parsing/normalizing physical addresses aroun

openvenues 94 Oct 15, 2022
Java library for parsing report files from static code analysis.

Violations Lib This is a Java library for parsing report files like static code analysis. Example of supported reports are available here. A number of

Tomas Bjerre 127 Nov 23, 2022
A Parser That parses OpenAPI definitions in JSON or YAML format and Generates Pact files That contain HTTP request/response interactions by parsing Given Open API specifications

This is a Parser That parses OpenAPI definitions in JSON or YAML format and Generates Pact files That contain HTTP request/response interactions by parsing Given Open API specifications.

dev-rgupta 2 Mar 19, 2022
A small library for parsing ItemStacks from a human-readable format

easy-item A small library for parsing ItemStacks from a human-readable format (1.16.5+, Java 11) TODO: Maybe add serialization (item to human-readable

Maximilian Dorn 3 Dec 4, 2021
Yet another Java annotation-based command parsing library, with Dependency Injection inspired by Guice

Commander A universal java command parsing library Building This project uses Gradle. Clone this repository: git clone https://github.com/OctoPvP/Comm

OctoDev 4 Oct 2, 2022
Logstash - transport and process your logs, events, or other data

Logstash Logstash is part of the Elastic Stack along with Beats, Elasticsearch and Kibana. Logstash is a server-side data processing pipeline that ing

elastic 13.2k Jan 5, 2023