package com.mini.capi.config.component;

import org.springframework.stereotype.Component;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;

@Component
public class AppProcessInfo {

    // 获取进程 PID（兼容 JDK 8+）
    public long getPid() {
        RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
        String name = mxBean.getName(); // 格式：PID@主机名
        return Long.parseLong(name.split("@")[0]);
    }

    // 获取 JVM 启动参数（如 -Xms、-Xmx、-D 系统属性）
    public List<String> getJvmArgs() {
        RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
        return mxBean.getInputArguments();
    }

    // 获取已使用堆内存（单位：MB）
    public long getUsedHeapMemory() {
        long total = Runtime.getRuntime().totalMemory() / 1024 / 1024;
        long free = Runtime.getRuntime().freeMemory() / 1024 / 1024;
        return total - free;
    }

    // 获取最大堆内存（单位：MB）
    public long getMaxHeapMemory() {
        return Runtime.getRuntime().maxMemory() / 1024 / 1024;
    }

    // 获取程序运行时间（单位：秒）
    public long getUptime() {
        RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
        return mxBean.getUptime() / 1000;
    }
}
