|
@@ -42,18 +42,18 @@ public class SysUtil {
|
|
|
public static String classLoadInfo(String spliteStr) {
|
|
|
ClassLoadingMXBean bean = ManagementFactory.getClassLoadingMXBean();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- sb.append("类加载数: " + bean.getLoadedClassCount()).append(spliteStr);
|
|
|
- sb.append("类加载总数: " + bean.getTotalLoadedClassCount()).append(spliteStr);
|
|
|
- sb.append("类卸载数: " + bean.getUnloadedClassCount()).append(spliteStr);
|
|
|
+ sb.append(" 클래스 로드 수: " + bean.getLoadedClassCount()).append(spliteStr);
|
|
|
+ sb.append("로드된 총 클래스 수: " + bean.getTotalLoadedClassCount()).append(spliteStr);
|
|
|
+ sb.append(" 클래스 제거 수: " + bean.getUnloadedClassCount()).append(spliteStr);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
|
public static String compilationInfo(String spliteStr) {
|
|
|
CompilationMXBean bean = ManagementFactory.getCompilationMXBean();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- sb.append("编译器名称: " + bean.getName()).append(spliteStr);
|
|
|
- sb.append("编译耗时: " + bean.getTotalCompilationTime()).append(spliteStr);
|
|
|
- sb.append("是否支持编译监视: " + bean.isCompilationTimeMonitoringSupported()).append(spliteStr);
|
|
|
+ sb.append(" 컴파일러 이름: " + bean.getName()).append(spliteStr);
|
|
|
+ sb.append(" 컴파일 시간: " + bean.getTotalCompilationTime()).append(spliteStr);
|
|
|
+ sb.append("컴파일 모니터링 지원 여부: " + bean.isCompilationTimeMonitoringSupported()).append(spliteStr);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
@@ -62,8 +62,8 @@ public class SysUtil {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
for (int i = 0; i < beans.size(); i++) {
|
|
|
GarbageCollectorMXBean bean = beans.get(i);
|
|
|
- sb.append(i).append("垃圾回收次数: ").append(bean.getCollectionCount()).append(spliteStr);
|
|
|
- sb.append(i).append("垃圾回收累积时间: ").append(bean.getCollectionTime()).append(spliteStr);
|
|
|
+ sb.append(i).append(" 가비지 수거 시간: ").append(bean.getCollectionCount()).append(spliteStr);
|
|
|
+ sb.append(i).append("가비지 수집 누적 시간: ").append(bean.getCollectionTime()).append(spliteStr);
|
|
|
}
|
|
|
return sb.toString();
|
|
|
}
|
|
@@ -71,23 +71,23 @@ public class SysUtil {
|
|
|
public static String memoryInfo(String spliteStr) {
|
|
|
MemoryMXBean bean = ManagementFactory.getMemoryMXBean();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- sb.append("堆内存使用: ").append(bean.getHeapMemoryUsage()).append(spliteStr);
|
|
|
- sb.append("栈内存使用: ").append(bean.getNonHeapMemoryUsage()).append(spliteStr);
|
|
|
- sb.append("挂起对象数: ").append(bean.getObjectPendingFinalizationCount()).append(spliteStr);
|
|
|
+ sb.append(" 힙 메모리 사용량: ").append(bean.getHeapMemoryUsage()).append(spliteStr);
|
|
|
+ sb.append("스택 메모리 사용량: ").append(bean.getNonHeapMemoryUsage()).append(spliteStr);
|
|
|
+ sb.append(" 보류 중인 개체 수: ").append(bean.getObjectPendingFinalizationCount()).append(spliteStr);
|
|
|
//内存池
|
|
|
List<MemoryPoolMXBean> beans = ManagementFactory.getMemoryPoolMXBeans();
|
|
|
for(int i=0;i<beans.size();i++) {
|
|
|
MemoryPoolMXBean b=beans.get(i);
|
|
|
-// sb.append(i).append("垃圾回收后内存: ").append(b.getCollectionUsage()).append(spliteStr);
|
|
|
-// sb.append(i).append("内存池的回收使用量阈值: ").append(b.getCollectionUsageThreshold()).append(spliteStr);
|
|
|
-// sb.append(i).append("虚拟机已检测到内存使用量达到或超过回收使用量阈值的次数: ").append(b.getCollectionUsageThresholdCount()).append(spliteStr);
|
|
|
- sb.append(i).append("内存池管理器名称: ").append(b.getMemoryManagerNames().toString()).append(spliteStr);
|
|
|
- sb.append(i).append("内存池名称: ").append(b.getName()).append(spliteStr);
|
|
|
- sb.append(i).append("内存使用峰值: ").append(b.getPeakUsage()).append(spliteStr);
|
|
|
- sb.append(i).append("内存池类型: ").append(b.getType()).append(spliteStr);
|
|
|
- sb.append(i).append("内存池使用量: ").append(b.getUsage()).append(spliteStr);
|
|
|
-// sb.append(i).append("内存使用量阀值: ").append(b.getUsageThreshold()).append(spliteStr);
|
|
|
-// sb.append(i).append("超过阀值次数: ").append(b.getUsageThresholdCount()).append(spliteStr);
|
|
|
+// sb.append(i).append("가비지 수집 후 메모리: ").append(b.getCollectionUsage()).append(spliteStr);
|
|
|
+// sb.append(i).append("메모리 풀 재활용 사용량 임계값: ").append(b.getCollectionUsageThreshold()).append(spliteStr);
|
|
|
+// sb.append(i).append("메모리 사용량이 회수 사용량 임계값에 도달하거나 초과했음을 가상 머신에서 감지한 횟수: ").append(b.getCollectionUsageThresholdCount()).append(spliteStr);
|
|
|
+ sb.append(i).append("메모리 풀 관리자 이름: ").append(b.getMemoryManagerNames().toString()).append(spliteStr);
|
|
|
+ sb.append(i).append(" 메모리 풀 이름: ").append(b.getName()).append(spliteStr);
|
|
|
+ sb.append(i).append(" 최대 메모리 사용량: ").append(b.getPeakUsage()).append(spliteStr);
|
|
|
+ sb.append(i).append(" 메모리 풀 유형: ").append(b.getType()).append(spliteStr);
|
|
|
+ sb.append(i).append(" 메모리 풀 사용량: ").append(b.getUsage()).append(spliteStr);
|
|
|
+// sb.append(i).append(" 메모리 사용량 임계값: ").append(b.getUsageThreshold()).append(spliteStr);
|
|
|
+// sb.append(i).append(" 임계값을 초과한 횟수: ").append(b.getUsageThresholdCount()).append(spliteStr);
|
|
|
}
|
|
|
return sb.toString();
|
|
|
}
|
|
@@ -95,11 +95,11 @@ public class SysUtil {
|
|
|
public static String osInfo(String spliteStr) {
|
|
|
OperatingSystemMXBean bean=ManagementFactory.getOperatingSystemMXBean();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
- sb.append("操作系统架构: ").append(bean.getArch()).append(spliteStr);
|
|
|
- sb.append("可使用的cpu数量: ").append(bean.getAvailableProcessors()).append(spliteStr);
|
|
|
- sb.append("操作系统名称: ").append(bean.getName()).append(spliteStr);
|
|
|
- sb.append("1分钟cpu消耗平均值: ").append(bean. getSystemLoadAverage()).append(spliteStr);
|
|
|
- sb.append("操作系统版本: ").append(bean.getVersion()).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 이름: ").append(bean.getName()).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 버전: ").append(bean.getVersion()).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 아키텍처: ").append(bean.getArch()).append(spliteStr);
|
|
|
+ sb.append(" 사용 가능한 CPU 수: ").append(bean.getAvailableProcessors()).append(spliteStr);
|
|
|
+ sb.append("1분 동안 평균 CPU 소비: ").append(bean.getSystemLoadAverage()).append(spliteStr);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
@@ -108,12 +108,12 @@ public class SysUtil {
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
ThreadInfo[] threads = bean.dumpAllThreads(false, false);
|
|
|
for(ThreadInfo thread:threads) {
|
|
|
- sb.append("线程信息: ").append(thread).append(spliteStr);
|
|
|
+ sb.append(" 스레드 정보: ").append(thread).append(spliteStr);
|
|
|
}
|
|
|
- sb.append("活动守护线程数目: ").append(bean.getDaemonThreadCount()).append(spliteStr);
|
|
|
- sb.append("峰值线程数: ").append(bean.getPeakThreadCount()).append(spliteStr);
|
|
|
- sb.append("当前线程数: ").append(bean.getThreadCount()).append(spliteStr);
|
|
|
- sb.append("总启用线程数: ").append(bean. getTotalStartedThreadCount()).append(spliteStr);
|
|
|
+ sb.append(" 활성 데몬 스레드 수: ").append(bean.getDaemonThreadCount()).append(spliteStr);
|
|
|
+ sb.append(" 최대 스레드 수: ").append(bean.getPeakThreadCount()).append(spliteStr);
|
|
|
+ sb.append(" 현재 스레드 수: ").append(bean.getThreadCount()).append(spliteStr);
|
|
|
+ sb.append("활성화된 총 스레드 수: ").append(bean.getTotalStartedThreadCount()).append(spliteStr);
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
@@ -125,45 +125,45 @@ public class SysUtil {
|
|
|
addr = InetAddress.getLocalHost();
|
|
|
ip = addr.getHostAddress();
|
|
|
} catch (UnknownHostException e) {
|
|
|
- log.error("虚拟机地址", e);
|
|
|
+ log.error("가상 머신 주소 Error: {}", e.getMessage());
|
|
|
}
|
|
|
Properties props = System.getProperties();
|
|
|
Map<String, String> map = System.getenv();
|
|
|
- sb.append("用户名: " + map.get("USERNAME")).append(spliteStr);
|
|
|
- sb.append("计算机名: " + map.get("COMPUTERNAME")).append(spliteStr);
|
|
|
- sb.append("计算机域名: " + map.get("USERDOMAIN")).append(spliteStr);
|
|
|
- sb.append("本地ip地址: " + ip).append(spliteStr);
|
|
|
- sb.append("本地主机名: " + addr.getHostName()).append(spliteStr);
|
|
|
- sb.append("JVM可以使用的总内存: " + totalMemory()).append(spliteStr);
|
|
|
- sb.append("JVM可以使用的剩余内存: " + freeMemory()).append(spliteStr);
|
|
|
- sb.append("JVM可以使用的处理器个数: " + availableProcessors()).append(spliteStr);
|
|
|
- sb.append("Java的运行环境版本: " + props.getProperty("java.version")).append(spliteStr);
|
|
|
- sb.append("Java的运行环境供应商: " + props.getProperty("java.vendor")).append(spliteStr);
|
|
|
- sb.append("Java供应商的URL: " + props.getProperty("java.vendor.url")).append(spliteStr);
|
|
|
- sb.append("Java的安装路径: " + props.getProperty("java.home")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机规范版本: " + props.getProperty("java.vm.specification.version")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机规范供应商: " + props.getProperty("java.vm.specification.vendor")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机规范名称: " + props.getProperty("java.vm.specification.name")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机实现版本: " + props.getProperty("java.vm.version")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机实现供应商: " + props.getProperty("java.vm.vendor")).append(spliteStr);
|
|
|
- sb.append("Java的虚拟机实现名称: " + props.getProperty("java.vm.name")).append(spliteStr);
|
|
|
- sb.append("Java运行时环境规范版本: " + props.getProperty("java.specification.version")).append(spliteStr);
|
|
|
- sb.append("Java运行时环境规范供应商: " + props.getProperty("java.specification.vender")).append(spliteStr);
|
|
|
- sb.append("Java运行时环境规范名称: " + props.getProperty("java.specification.name")).append(spliteStr);
|
|
|
- sb.append("Java的类格式版本号: " + props.getProperty("java.class.version")).append(spliteStr);
|
|
|
-// sb.append("Java的类路径: " + props.getProperty("java.class.path")).append(spliteStr);
|
|
|
- sb.append("加载库时搜索的路径列表: " + props.getProperty("java.library.path")).append(spliteStr);
|
|
|
- sb.append("默认的临时文件路径: " + props.getProperty("java.io.tmpdir")).append(spliteStr);
|
|
|
- sb.append("一个或多个扩展目录的路径: " + props.getProperty("java.ext.dirs")).append(spliteStr);
|
|
|
- sb.append("操作系统的名称: " + props.getProperty("os.name")).append(spliteStr);
|
|
|
- sb.append("操作系统的构架: " + props.getProperty("os.arch")).append(spliteStr);
|
|
|
- sb.append("操作系统的版本: " + props.getProperty("os.version")).append(spliteStr);
|
|
|
- sb.append("文件分隔符: " + props.getProperty("file.separator")).append(spliteStr);
|
|
|
- sb.append("路径分隔符: " + props.getProperty("path.separator")).append(spliteStr);
|
|
|
- sb.append("行分隔符: " + props.getProperty("line.separator")).append(spliteStr);
|
|
|
- sb.append("用户的账户名称: " + props.getProperty("user.name")).append(spliteStr);
|
|
|
- sb.append("用户的主目录: " + props.getProperty("user.home")).append(spliteStr);
|
|
|
- sb.append("用户的当前工作目录: " + props.getProperty("user.dir")).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 이름: " + props.getProperty("os.name")).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 아키텍처: " + props.getProperty("os.arch")).append(spliteStr);
|
|
|
+ sb.append(" 운영 체제 버전: " + props.getProperty("os.version")).append(spliteStr);
|
|
|
+ sb.append(" 파일 구분 기호: " + props.getProperty("file.separator")).append(spliteStr);
|
|
|
+ sb.append(" 경로 구분 기호: " + props.getProperty("path.separator")).append(spliteStr);
|
|
|
+ sb.append(" 줄 구분 기호: " + props.getProperty("line.separator")).append(spliteStr);
|
|
|
+ sb.append(" 사용자의 계정 이름: " + props.getProperty("user.name")).append(spliteStr);
|
|
|
+ sb.append(" 사용자의 홈 디렉토리: " + props.getProperty("user.home")).append(spliteStr);
|
|
|
+ sb.append(" 사용자의 현재 작업 디렉토리: " + props.getProperty("user.dir")).append(spliteStr);
|
|
|
+ sb.append(" 컴퓨터 이름: " + map.get("COMPUTERNAME")).append(spliteStr);
|
|
|
+ sb.append(" 컴퓨터 도메인 이름: " + map.get("USERDOMAIN")).append(spliteStr);
|
|
|
+ sb.append(" 사용자 이름: " + map.get("USERNAME")).append(spliteStr);
|
|
|
+ sb.append(" 로컬 IP 주소: " + ip).append(spliteStr);
|
|
|
+ sb.append(" 로컬 호스트 이름: " + addr.getHostName()).append(spliteStr);
|
|
|
+ sb.append(" JVM에 사용 가능한 총 메모리: " + totalMemory()).append(spliteStr);
|
|
|
+ sb.append(" JVM에 사용 가능한 남은 메모리: " + freeMemory()).append(spliteStr);
|
|
|
+ sb.append(" JVM이 사용할 수 있는 프로세서 수: " + availableProcessors()).append(spliteStr);
|
|
|
+ sb.append(" Java 런타임 환경 버전: " + props.getProperty("java.version")).append(spliteStr);
|
|
|
+ sb.append(" Java 런타임 환경 공급업체: " + props.getProperty("java.vendor")).append(spliteStr);
|
|
|
+ sb.append(" Java 공급업체 URL: " + props.getProperty("java.vendor.url")).append(spliteStr);
|
|
|
+ sb.append(" Java 설치 경로: " + props.getProperty("java.home")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 사양 버전: " + props.getProperty("java.vm.specification.version")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 사양 공급업체: " + props.getProperty("java.vm.specification.vendor")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 사양 이름: " + props.getProperty("java.vm.specification.name")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 구현 버전: " + props.getProperty("java.vm.version")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 구현 공급업체: " + props.getProperty("java.vm.vendor")).append(spliteStr);
|
|
|
+ sb.append(" Java 가상 머신 구현 이름: " + props.getProperty("java.vm.name")).append(spliteStr);
|
|
|
+ sb.append(" Java 런타임 환경 사양 버전: " + props.getProperty("java.specification.version")).append(spliteStr);
|
|
|
+ sb.append(" Java 런타임 환경 사양 공급자: " + props.getProperty("java.specification.vender")).append(spliteStr);
|
|
|
+ sb.append(" Java 런타임 환경 사양 이름: " + props.getProperty("java.specification.name")).append(spliteStr);
|
|
|
+ sb.append(" Java 클래스 형식 버전 번호: " + props.getProperty("java.class.version")).append(spliteStr);
|
|
|
+// sb.append(" Java 클래스 경로: " + props.getProperty("java.class.path")).append(spliteStr);
|
|
|
+ sb.append(" 라이브러리 로딩 시 검색할 경로 목록: " + props.getProperty("java.library.path")).append(spliteStr);
|
|
|
+ sb.append(" 기본 임시 파일 경로: " + props.getProperty("java.io.tmpdir")).append(spliteStr);
|
|
|
+ sb.append("하나 이상의 확장 디렉터리에 대한 경로: " + props.getProperty("java.ext.dirs")).append(spliteStr);
|
|
|
sb.append(classLoadInfo(spliteStr));
|
|
|
sb.append(compilationInfo(spliteStr));
|
|
|
sb.append(collectionInfo(spliteStr));
|