Compute
Elastic Cloud Server
Huawei Cloud Flexus
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Networking
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Management & Governance
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
OneAccess
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
IAM Identity Center
Cloud Operations Center
Resource Governance Center
Migration
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Analytics
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
Data Lake Factory
DataArts Lake Formation
IoT
IoT Device Access
Others
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Security & Compliance
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Edge Security
Managed Threat Detection
Blockchain
Blockchain Service
Web3 Node Engine Service
Media Services
Media Processing Center
Video On Demand
Live
SparkRTC
MetaStudio
Storage
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Storage Disaster Recovery Service
Scalable File Service Turbo
Scalable File Service
Volume Backup Service
Cloud Server Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Databases
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
Multi-Site High Availability Service
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Business Applications
Workspace
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Video Intelligent Analysis Service
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Content Delivery & Edge Computing
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Intelligent EdgeCloud
Solutions
SAP Cloud
High Performance Computing
Developer Services
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
CodeArts Repo
Cloud Application Engine
MacroVerse aPaaS
KooMessage
KooPhone
KooDrive

JVM Monitoring

Updated on 2022-02-21 GMT+08:00

JVM monitoring displays the memory and thread metrics of the JVM operating environment for Java applications. You can monitor metric trends in real time to analyze performance.

On the Memory and Thread tab pages, you can view the memory and thread graphs to quickly locate problems such as memory leakage and thread exceptions.

Memory Graphs

As shown in Figure 1, in a selected time range, the trends of the maximum, committed, and used memory in different JVM memory spaces (such as the total memory, heap memory, and non-heap memory spaces) of an instance are displayed. In addition, the garbage collection (GC) duration and times are also displayed.

Figure 1 Memory graphs

JVM memory

JVM memory consists of heap and non-heap memory.

  • Heap memory: A heap is the data area where the JVM is running. It allocates memory for all class instances and arrays. Heap memory of objects is reclaimed by an automatic memory management system called garbage collector. Heap space consists of eden space, survivor space, and tenured space.
  • Non-heap memory: Memory (excluding heap memory) managed by JVM. Non-heap space consists of code cache and permanent space (or meta space).

Java heap is the main area managed by the garbage collector. It is also called garbage collection heap. GC mode includes full GC and minor GC.

Table 1 Memory spaces

Space Name

Description

Eden space

Initially allocates memory from the thread pool to most objects.

Survivor space

Stores the eden space's objects that are not reclaimed during GC.

Tenured space

Maintains the objects which have been stored in the survivor space for a period of time.

Code cache

Compiles and stores local code.

Permanent space

Stores static data of VMs, for example, classes and method objects.

Meta space

Stores local class metadata. In versions later than Java 8, permanent space is replaced by meta space.

Full GC

Indicates the GC performed in the entire heap space (covering young-, old-, and permanent-generation spaces) when the memory space is still insufficient after memory reclamation.

Minor GC

Indicates the GC performed in the young-generation space (including eden and survivor spaces) when the allocated memory is insufficient.

JVM collects garbage based on generations. JVM heap space is divided into old- and young-generation spaces. More than 90% objects that exist only for a short period of time are stored in the young-generation space, while objects that have long life cycles are stored in the old-generation space. Young-generation space is further divided into eden space and two survivor spaces. New objects are initially allocated to the eden space. The survivor spaces are used as the buffer between eden space and tenured space. Objects that are survived after several rounds of GC in the survivor spaces are then transferred to the old-generation space, as shown in Figure 2.

Figure 2 Memory spaces
NOTE:

There are two survivor spaces, which are represented by from and to pointers. The to pointer points to the empty survivor space.

Thread Graphs

As shown in Figure 3, in a selected time range, the trends of total threads, sticky threads, dedicated threads, and other threads are displayed.

Figure 3 Thread graphs
Table 2 Threads

Thread Name

Description

Total threads

Both active and standby threads are included. Sticky threads and dedicated threads become standby threads after being executed.

Deadlock threads

When two or more processes encounter resource conflicts or the communication between them is abnormal, the system enters the deadlock state.

Sticky threads

If the time taken to process a request by a thread exceeds the preset maximum time, the thread is called a sticky thread.

Dedicated threads

If the time taken to process a request by a thread exceeds the normal execution time but does not exceed the maximum time of a sticky thread, the thread is called a dedicated thread.

Total executed threads

Both active and idle threads are included.

Active threads

Sticky threads, dedicated threads, and threads that are being executed are included.

Idle threads

Threads are in idle state. When there is no task, a thread is in the idle state. When receiving a request, the thread pool assigns an idle thread to the request. After the assigned task is completed, the idle thread returns to the thread pool and waits for another task.

Adding a Threshold Rule

You can add threshold rules for all JVM memory and thread metrics. When the rules are met, alarms are reported, altering you to risks.

  1. On the JVM Monitoring page, select an application in the upper left corner, and then select an instance.
  2. In the trend graph of a memory or thread metric on the right, set a threshold rule. Specifically, click Add Threshold Rule on the top of the trend graph.

  3. Set rule parameters and click Submit, as shown in the following figure.

We use cookies to improve our site and your experience. By continuing to browse our site you accept our cookie policy. Find out more

Feedback

Feedback

Feedback

0/500

Selected Content

Submit selected content with the feedback