diff --git a/src/pages/JVM/index.js b/src/pages/JVM/index.js new file mode 100644 index 0000000..561b6d8 --- /dev/null +++ b/src/pages/JVM/index.js @@ -0,0 +1,236 @@ +// import { useState } from 'react'; + +// material-ui +import { + Grid, + Typography, + Stack +} from '@mui/material'; +import * as React from "react"; + +import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' +// ==============================|| DASHBOARD - DEFAULT ||============================== // + +const JVMDefault = () => { + // const userData = JSON.parse(localStorage.getItem("userData")); + + React.useEffect(() => { + localStorage.setItem('searchCriteria',"") + }, []) + + const BackgroundHead = { + backgroundImage: `url(${titleBackgroundImg})`, + width: '100%', + height: '100%', + backgroundSize:'contain', + backgroundRepeat: 'no-repeat', + backgroundColor: '#0C489E', + backgroundPosition: 'right' + } + + const htmlContent = ` + +
Certainly! Here's the complete implementation, showing both the updated Java controller to provide JVM + information in MB, and the corresponding UI code that will display the information. +
+This Spring Boot controller exposes the JVM information (including heap memory usage, operating system + details, and uptime) in MB, and it provides it via a REST API (/jvm-info). +
+
+ import org.springframework.web.bind.annotation.GetMapping;
+ import org.springframework.web.bind.annotation.RestController;
+
+ import java.lang.management.ManagementFactory;
+ import java.lang.management.MemoryMXBean;
+ import java.lang.management.MemoryUsage;
+ import java.lang.management.OperatingSystemMXBean;
+ import java.util.HashMap;
+ import java.util.Map;
+
+ @RestController
+ public class JvmInfoController {
+
+ @GetMapping("/jvm-info")
+ public Map getJvmInfo() {
+ Map jvmInfo = new HashMap<>();
+
+ // Get the Operating System MXBean for system-related info
+ OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
+ jvmInfo.put("osName", osBean.getName());
+ jvmInfo.put("osVersion", osBean.getVersion());
+ jvmInfo.put("osArch", osBean.getArch());
+
+ // Get memory info and convert bytes to MB
+ MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
+ MemoryUsage heapMemoryUsage = memoryBean.getHeapMemoryUsage();
+ jvmInfo.put("heapMemoryInitMB", bytesToMB(heapMemoryUsage.getInit()));
+ jvmInfo.put("heapMemoryUsedMB", bytesToMB(heapMemoryUsage.getUsed()));
+ jvmInfo.put("heapMemoryMaxMB", bytesToMB(heapMemoryUsage.getMax()));
+ jvmInfo.put("heapMemoryCommittedMB", bytesToMB(heapMemoryUsage.getCommitted()));
+
+ // Get JVM uptime and other stats
+ long uptime = ManagementFactory.getRuntimeMXBean().getUptime();
+ jvmInfo.put("jvmUptimeMillis", uptime);
+
+ return jvmInfo;
+ }
+
+ // Helper function to convert bytes to MB
+ private long bytesToMB(long bytes) {
+ return bytes / (1024 * 1024);
+ }
+ }
+
+
+ Here’s the frontend HTML page that will display the JVM information in a clean and readable format. It + uses JavaScript (fetch API) to get data from the /jvm-info endpoint and display it in a pre block +
+
+ <!DOCTYPE html>
+ <html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>JVM Information</title>
+ <style>
+ body {
+ font-family: Arial, sans-serif;
+ margin: 20px;
+ }
+ h1 {
+ color: #333;
+ }
+ pre {
+ background-color: #f4f4f4;
+ padding: 10px;
+ border-radius: 5px;
+ font-size: 14px;
+ line-height: 1.6;
+ color: #333;
+ max-height: 400px;
+ overflow-y: scroll;
+ }
+ .container {
+ max-width: 800px;
+ margin: 0 auto;
+ }
+ </style>
+ <script>
+ function fetchJvmInfo() {
+ fetch('/jvm-info')
+ .then(response => response.json())
+ .then(data => {
+ document.getElementById("jvmInfo").innerHTML = JSON.stringify(data, null, 2);
+ })
+ .catch(error => console.error('Error fetching JVM info:', error));
+ }
+
+ window.onload = fetchJvmInfo;
+ </script>
+ </head>
+ <body>
+ <div class="container">
+ <h1>JVM Information</h1>
+ <pre id="jvmInfo">Loading...</pre>
+ </div>
+ </body>
+ </html>
+
+
+ If the /jvm-info API returns the following JSON, it will be displayed on the UI:
+
+ {
+ "osName": "Windows 10",
+ "osVersion": "10.0",
+ "osArch": "amd64",
+ "heapMemoryInitMB": 128,
+ "heapMemoryUsedMB": 50,
+ "heapMemoryMaxMB": 1024,
+ "heapMemoryCommittedMB": 512,
+ "jvmUptimeMillis": 123456789
+ }
+
+
+ On the webpage, this information will be displayed as follows in a neatly formatted block:
+
+ JVM Information
+ {
+ "osName": "Windows 10",
+ "osVersion": "10.0",
+ "osArch": "amd64",
+ "heapMemoryInitMB": 128,
+ "heapMemoryUsedMB": 50,
+ "heapMemoryMaxMB": 1024,
+ "heapMemoryCommittedMB": 512,
+ "jvmUptimeMillis": 123456789
+ }
+
+ Let me know if you need further help with customization or any other features!
+