### GC Analyzer

- Command Line Flags: This will display the Command Line Arguments of the process for the GC Logs. The command-line flags are crucial for controlling the verbosity and content of information logged about garbage collection events, as defined by the Java Virtual Machine (JVM).
- JVM Memory Size: This will show the details for the JVM memory size of the GC Logs.
  - User can view the detailed information for the following of the JVM memory size in a tabular form:
    - Generation: It will show the JVM Young Generation, Old Generation and Total Generation details for the log file.
    - Allocated (mb): This will show the allocated memory details that “match with the size that is specified by the JVM system properties (i.e,, Xmx, -Xms). Say you configured total heap size (i.e. Xmx) as 2gb , whereas at runtime if JVM has allocated only 1gb, then in the report you are going to see allocated size as well”.
    - Peak (mb): It will show the highest “Peak memory utilization of each generation. Typically, it won’t exceed the allocated size. However, in few cases, we have seen peak utilization go beyond allocated size as well, especially in G1 GC”.

  Note: User can also be able to see JVM Memory Size Allocated vs Peak (mb) in statistical form that is graph for the JVM memory Size.

- Key Performance Indicator: Garbage collector Key Performance Indicators (KPIs) aim to minimize pause times, maximize throughput, optimize heap utilization, minimize collection overhead, balance frequency, and reduce the memory footprint for efficient memory management in software applications. This will show the GC logs key performance indicator details:
  - Throughput: It is the percentage of the time spent in processing real transactions vs time spent in GC activity. Higher percentage is a good indication that GC overhead is low . One Should aim for high throughput.
  - Latency: The number of times during garbage collection cycles in a Java Virtual Machine, indicating the overall impact on application responsiveness.
    - Avg Pause GC Time: Average Pause GC Time represents the average duration of pause times during garbage collection cycles in a Java Virtual Machine, indicating the overall impact on application responsiveness.
    - Max Pause GC Time: Max Pause GC Time is the maximum duration during which application threads are paused for garbage collection in a Java Virtual Machine, crucial for minimizing latency in applications.
- GC Time: This will show the garbage collection time for the GC logs.
  - Pause Time: Gives insights into the frequency and impact of trash collection pauses on the application. Monitoring and analyzing these variables aids in optimizing trash collection settings and boosting overall programmed performance.
  - Concurrent Time: Period when application runs alongside garbage collection. User can see the Count, Avg Times (sec), Min Time(sec), Max Time (sec,) Total Time (sec) for GC log details in Tabular form as well in Graphical form.
- GC Causes: This will show the causes and its respective time for the GC logs. "GC Causes" are events or conditions triggering garbage collection reclaiming and managing memory in runtimes application.
- Collection Phases Statistics: GC is an automated memory management process that reclaims unused memory. Collection phase statistics provide insights into GC performance. Analyzing garbage collection (GC) phases is crucial because this section outlines the distinct stages of the GC process, providing vital details that enable to optimize memory management, minimize application pauses, and enhance overall performance by understanding how memory is reclaimed and managed during runtime. The field available in the table give vital info regarding the performance of various GC phases so that you can use them to optimize the GC process
- Object Stats: GC Object Stats refers to statistics related to objects managed by the Garbage Collector during its collection process, providing insights into memory usage and efficiency.
  - Total created bytes: It is the amount of byte created by the application. To have best performance, create as minimal bytes as possible.
  - Total promoted bytes: It is the amount of bytes that are promoted from Young Generation to Old Generation.
  - Avg Creation Rate: It is the object creation rate by the application. When more objects are created, more GCs has to be run to reclaim those objects from the memory. Single best tip for the optimized performance is to keep the allocation rate as low as possible.
  - Avg Promotion Rate: It is the object promoted rate from Young Generation to Old Generation. When more objects are promoted to Old Generation full GC will be run more frequently.
- Specified GC Graphics: The specified GC graphs allows you to visually compare integral metrics like pause duration time and reclaimed bytes for young and full GC. With this, you can easily identify anomalies related to time & memory impact of the two processes. Along with these two visualizations, you can also view the overall heap usage of the GC & make sure that your applications’ performance is not impacted due to excessive heap consumption by the GC process.