/* * Copyright (c) 2018-2028, DreamLu All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: DreamLu 卢春梦 (596392912@qq.com) */ package org.springblade.core.tool.utils; import java.lang.management.ManagementFactory; import java.time.Duration; import java.util.List; /** * 运行时工具类 * * @author L.cm */ public class RuntimeUtil { /** * 获得当前进程的PID *

* 当失败时返回-1 * * @return pid */ public static int getPid() { // something like '@', at least in SUN / Oracle JVMs final String jvmName = ManagementFactory.getRuntimeMXBean().getName(); final int index = jvmName.indexOf(CharPool.AT); if (index > 0) { return NumberUtil.toInt(jvmName.substring(0, index), -1); } return -1; } /** * 返回应用启动到现在的时间 * * @return {Duration} */ public static Duration getUpTime() { long upTime = ManagementFactory.getRuntimeMXBean().getUptime(); return Duration.ofMillis(upTime); } /** * 返回输入的JVM参数列表 * * @return jvm参数 */ public static String getJvmArguments() { List vmArguments = ManagementFactory.getRuntimeMXBean().getInputArguments(); return StringUtil.join(vmArguments, StringPool.SPACE); } /** * 获取CPU核数 * * @return cpu count */ public static int getCpuNum() { return Runtime.getRuntime().availableProcessors(); } }