「java内核监控」java堆外内存监控

博主:adminadmin 2022-11-29 10:17:06 60

今天给各位分享java内核监控的知识,其中也会对java堆外内存监控进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java类应用监控应该监控哪些

当有问题出现时,许多开发人员可能会比较盲目的用这些工具来试探性定位问题,而大多数情况下,这种试探会无功而返。因为这些分析工具主要是侧重Java单方面的分析,比如该系统调用第三方API,如果第三方API有问题,是无法监控到的。还有像文件、DB资源的访问也是是无法监控到的。

除了JAVA自带的监控工具外,我们尝试了第三方的监控工具透视宝,功能相对全面,且易操作。

在功能方面,透视宝都包括:查看执行最慢的10个元素,包括元素执行次数、持续时长和占用时长百分比;查看HTTP请求参数,包括请求的响应状态、链接页面、具体的请求参数及返回结果;查看代码执行堆栈的详细树状信息,包括每个方法的计算时间、总耗时和被调用的次数,您能直接看到特殊标识的最慢方法;查看涉及SQL语句的总耗时排序,包括SQL执行总耗时、执行次数和具体的查询语句;第三方API调用。

怎样采用java实现对系统进程的监控

SWT Win32 Extension 是Eclipse类库SWT的Win32本地原生扩展.

本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用操作系统动态链接库的系统API或者方法。您仅仅需要做的就是编写Java代码,   SWT Win32 Extension来负责剩下的部分。SWT Win32 Extension提供了一系列的功能使您的应用程序看上去和Win32本机程序别无二致。

窗口装饰功能: 提供窗口置顶,透明,闪动等功能。 

自定义窗口: 创建不规则的窗口。 

访问Windows注册表。 

系统文件夹: 获取系统特殊文件加的路径和图标。 

系统快捷方式: 管理系统快捷方式。 

系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 

系统会话: 提供关机,休眠,重启,注销等功能。 

系统IO及网络功能: 提供磁盘和网络相关信息。 

活动桌面功能: 管理Windows活动桌面。 

系统钩子: 注册和卸载系统钩子,能够拦截和处理系统事件。 

窗口系统菜单: 管理窗口菜单。用户可以自定义系统菜单和处理菜单事件。 

Ole 控件: 提供对一些常用控件的封装,比如flash。 值得一提的是,您能够访问SWT提供的所有功能,因为SWT Win32 Extension是从SWT派生出来的。

怎么用JAVA实现监控LINUX下CPU的使用率??? windows下怎么查看呢?用什么方法? 请高手指教,谢谢!

用java的话,有两个方法:

1.利用java直接调用shell命令查看cpu的参数(系统不同命令也不同)

类似代码:

可以查考

2.利用软件linux下可以安装net-snmp实现远程和本地监控

具体方法的话比较负责你网上查查

因为不知道你的linux到底是什么系统所有我没法给你写命令

如何监视计算机的CPU,内存和磁盘使用情况在Java中

使用sigar来监控,简单方便!

使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下,供sigar程序调用,还需要sigar jar包。以下程序经过测试,完全可用!

 

有关jar包跟dll文件  我上传不了,私信我,我发你

 

 

 

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.Map;

import java.util.Properties;

import java.util.Timer;

import java.util.TimerTask;

 

import org.hyperic.sigar.CpuInfo;

import org.hyperic.sigar.CpuPerc;

import org.hyperic.sigar.FileSystem;

import org.hyperic.sigar.FileSystemUsage;

import org.hyperic.sigar.Mem;

import org.hyperic.sigar.NetFlags;

import org.hyperic.sigar.NetInterfaceConfig;

import org.hyperic.sigar.NetInterfaceStat;

import org.hyperic.sigar.OperatingSystem;

import org.hyperic.sigar.Sigar;

import org.hyperic.sigar.SigarException;

import org.hyperic.sigar.Swap;

import org.hyperic.sigar.Who;

 

public class RuntimeTest {

    public static void main(String[] args) {

        try { 

            Timer timer = new Timer();//定时器

            TimerTask task = new TimerTask(){

                public void run() {

                    try {

                        memory();

                    } catch (SigarException e) {

                        e.printStackTrace();

                    }

                }

            };

            try{

            timer.schedule(task, 0, 3000);//每3秒取一次

            }catch(Exception ex){

                ex.printStackTrace();

            }

            // System信息,从jvm获取

           // property();//根据自己的需求,都可以放到定时器中定时获取

            // cpu信息

            //cpu();

            // 内存信息

           // memory();

            // 操作系统信息

          //  os();

            // 用户信息

          //  who();

            

            

            

        } catch (Exception e1) {

            e1.printStackTrace();

        }

    }

  

    private static void property() throws UnknownHostException {

        Runtime r = Runtime.getRuntime();

        Properties props = System.getProperties();

        InetAddress addr;

        addr = InetAddress.getLocalHost();

        String ip = addr.getHostAddress();

        MapString, String map = System.getenv();

        String userName = map.get("USERNAME");// 获取用户名

        String computerName = map.get("COMPUTERNAME");// 获取计算机名

        String userDomain = map.get("USERDOMAIN");// 获取计算机域名

        System.out.println("用户名:    " + userName);

        System.out.println("计算机名:   " + computerName);

        System.out.println("计算机域名:  " + userDomain);

        System.out.println("本地ip地址: " + ip);

        System.out.println("本地主机名:  " + addr.getHostName());

        System.out.println("JVM可以使用的总内存:    " + r.totalMemory());

        System.out.println("JVM可以使用的剩余内存:   " + r.freeMemory());

        System.out.println("JVM可以使用的处理器个数:  " + r.availableProcessors());

        System.out.println("Java的运行环境版本:    " + props.getProperty("java.version"));

        System.out.println("Java的运行环境供应商:   " + props.getProperty("java.vendor"));

        System.out.println("Java供应商的URL:    " + props.getProperty("java.vendor.url"));

        System.out.println("Java的安装路径:  " + props.getProperty("java.home"));

        System.out.println("Java的虚拟机规范版本:   " + props.getProperty("java.vm.specification.version"));

        System.out.println("Java的虚拟机规范供应商:  " + props.getProperty("java.vm.specification.vendor"));

        System.out.println("Java的虚拟机规范名称:   " + props.getProperty("java.vm.specification.name"));

        System.out.println("Java的虚拟机实现版本:   " + props.getProperty("java.vm.version"));

        System.out.println("Java的虚拟机实现供应商:  " + props.getProperty("java.vm.vendor"));

        System.out.println("Java的虚拟机实现名称:   " + props.getProperty("java.vm.name"));

        System.out.println("Java运行时环境规范版本:  " + props.getProperty("java.specification.version"));

        System.out.println("Java运行时环境规范供应商: " + props.getProperty("java.specification.vender"));

        System.out.println("Java运行时环境规范名称:  " + props.getProperty("java.specification.name"));

        System.out.println("Java的类格式版本号:    " + props.getProperty("java.class.version"));

        System.out.println("Java的类路径:   " + props.getProperty("java.class.path"));

        System.out.println("加载库时搜索的路径列表:    " + props.getProperty("java.library.path"));

        System.out.println("默认的临时文件路径:  " + props.getProperty("java.io.tmpdir"));

        System.out.println("一个或多个扩展目录的路径:   " + props.getProperty("java.ext.dirs"));

        System.out.println("操作系统的名称:    " + props.getProperty("os.name"));

        System.out.println("操作系统的构架:    " + props.getProperty("os.arch"));

        System.out.println("操作系统的版本:    " + props.getProperty("os.version"));

        System.out.println("文件分隔符:  " + props.getProperty("file.separator"));

        System.out.println("路径分隔符:  " + props.getProperty("path.separator"));

        System.out.println("行分隔符:   " + props.getProperty("line.separator"));

        System.out.println("用户的账户名称:    " + props.getProperty("user.name"));

        System.out.println("用户的主目录: " + props.getProperty("user.home"));

        System.out.println("用户的当前工作目录:  " + props.getProperty("user.dir"));

    }

  

    private static void memory() throws SigarException {

        Sigar sigar = new Sigar();

        Mem mem = sigar.getMem();

        float total = mem.getTotal();

        float used = mem.getUsed();

        // 内存总量

        System.out.println("内存总量:   " + mem.getTotal() / 1024L/1024L + "M av");

        // 当前内存使用量

        System.out.println("当前内存使用量:    " + mem.getUsed() / 1024L/1024L + "M used");

        // 当前内存剩余量

        System.out.println("当前内存剩余量:    " + mem.getFree() / 1024L/1024L + "M free");

        // 当前内存使用率

        System.out.println("内存使用率:    " +used/total*100+"%");

        Swap swap = sigar.getSwap();

        // 交换区总量

        System.out.println("交换区总量:  " + swap.getTotal() / 1024L/1024L + "M av");

        // 当前交换区使用量

        System.out.println("当前交换区使用量:   " + swap.getUsed() / 1024L/1024L + "M used");

        // 当前交换区剩余量

        System.out.println("当前交换区剩余量:   " + swap.getFree() / 1024L/1024L + "M free");

    }

  

    private static void cpu() throws SigarException {

        Sigar sigar = new Sigar();

        CpuInfo infos[] = sigar.getCpuInfoList();

        CpuPerc cpuList[] = null;

        cpuList = sigar.getCpuPercList();

        for (int i = 0; i  infos.length; i++) {// 不管是单块CPU还是多CPU都适用

            CpuInfo info = infos[i];

            System.out.println("第" + (i + 1) + "块CPU信息");

            System.out.println("CPU的总量MHz:  " + info.getMhz());// CPU的总量MHz

            System.out.println("CPU生产商: " + info.getVendor());// 获得CPU的卖主,如:Intel

            System.out.println("CPU类别:  " + info.getModel());// 获得CPU的类别,如:Celeron

            System.out.println("CPU缓存数量:    " + info.getCacheSize());// 缓冲存储器数量

            printCpuPerc(cpuList[i]);

        }

    }

  

    private static void printCpuPerc(CpuPerc cpu) {

        System.out.println("CPU用户使用率:   " + CpuPerc.format(cpu.getUser()));// 用户使用率

        System.out.println("CPU系统使用率:   " + CpuPerc.format(cpu.getSys()));// 系统使用率

        System.out.println("CPU当前等待率:   " + CpuPerc.format(cpu.getWait()));// 当前等待率

        System.out.println("CPU当前错误率:   " + CpuPerc.format(cpu.getNice()));//

        System.out.println("CPU当前空闲率:   " + CpuPerc.format(cpu.getIdle()));// 当前空闲率

        System.out.println("CPU总的使用率:   " + CpuPerc.format(cpu.getCombined()));// 总的使用率

    }

  

    private static void os() {

        OperatingSystem OS = OperatingSystem.getInstance();

        // 操作系统内核类型如: 386、486、586等x86

        System.out.println("操作系统:   " + OS.getArch());

        System.out.println("操作系统CpuEndian():    " + OS.getCpuEndian());//

        System.out.println("操作系统DataModel():    " + OS.getDataModel());//

        // 系统描述

        System.out.println("操作系统的描述:    " + OS.getDescription());

        // 操作系统类型

        // System.out.println("OS.getName():    " + OS.getName());

        // System.out.println("OS.getPatchLevel():  " + OS.getPatchLevel());//

        // 操作系统的卖主

        System.out.println("操作系统的卖主:    " + OS.getVendor());

        // 卖主名称

        System.out.println("操作系统的卖主名:   " + OS.getVendorCodeName());

        // 操作系统名称

        System.out.println("操作系统名称: " + OS.getVendorName());

        // 操作系统卖主类型

        System.out.println("操作系统卖主类型:   " + OS.getVendorVersion());

        // 操作系统的版本号

        System.out.println("操作系统的版本号:   " + OS.getVersion());

    }

  

    private static void who() throws SigarException {

        Sigar sigar = new Sigar();

        Who who[] = sigar.getWhoList();

        if (who != null  who.length  0) {

            for (int i = 0; i  who.length; i++) {

                // System.out.println("当前系统进程表中的用户名" + String.valueOf(i));

                Who _who = who[i];

                System.out.println("用户控制台:  " + _who.getDevice());

                System.out.println("用户host: " + _who.getHost());

                // System.out.println("getTime():   " + _who.getTime());

                // 当前系统进程表中的用户名

                System.out.println("当前系统进程表中的用户名:   " + _who.getUser());

            }

        }

    }

  

   

  

    

  

    

}

关于java内核监控和java堆外内存监控的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。