关于内存管理java.lang.management java.lang.management包中的那些内存管理接口(类),如MemoryPoolMXBean,MemoryMXBean到底能提供什么样的功能?看了API不是很明白。迫切希望高手能结合一些case给讲讲,就内存方面的就行!3q 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 个人理解:提供给外部应用查看jvm的运行状况的吧例如:jconsole 等工具 查看 jvm运行状况,象内存,线程, 这样啊,那岂不是和Runtime获取内存使用情况的效果差不多? 呵呵,希望这个对你有帮助http://improving.javaeye.com/blog/436317 import java.lang.management.ClassLoadingMXBean;import java.lang.management.CompilationMXBean;import java.lang.management.ManagementFactory;import java.lang.management.MemoryMXBean;import java.lang.management.ThreadMXBean;import java.lang.management.RuntimeMXBean;import java.lang.management.OperatingSystemMXBean;import java.lang.management.MemoryPoolMXBean;import java.util.List;public class JVM { public static void main(String[] args) { //Java 虚拟机线程系统的管理接口 ThreadMXBean ThreadMXBean th=(ThreadMXBean)ManagementFactory.getThreadMXBean() ; System.out.println("活动线程的当前数目"+th.getThreadCount()); System.out.println("返回活动守护线程的当前数目"+th.getDaemonThreadCount()); System.out.println("Java 虚拟机启动或峰值重置以来峰值活动线程计数"+th.getPeakThreadCount()); System.out.println("返回当前线程的总 CPU 时间"+th.getCurrentThreadUserTime()); System.out.println("当前线程在用户模式中执行的 CPU 时间"+th.getCurrentThreadUserTime()); //Java 虚拟机的运行时系统的管理接口。 RuntimeMXBean RuntimeMXBean run=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean(); System.out.println("正在运行的 Java 虚拟机的名称"+run.getName()); System.out.println("Java 虚拟机规范名称"+run.getSpecName()); System.out.println("返回 Java 库路径"+run.getLibraryPath()); System.out.println("系统类加载器用于搜索类文件的 Java 类路径"+run.getClassPath()); //用于操作系统的管理接口,Java 虚拟机在此操作系统上运行 OperatingSystemMXBean OperatingSystemMXBean op=(OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean(); System.out.println("返回操作系统的架构"+op.getArch()); System.out.println("返回操作系统名称"+op.getName()); System.out.println("返回操作系统的版本"+op.getVersion()); System.out.println("Java 虚拟机可以使用的处理器数目"+op.getAvailableProcessors()); //内存池的管理接口。内存池表示由 Java 虚拟机管理的内存资源, //由一个或多个内存管理器对内存池进行管理 MemoryPoolMXBean List<MemoryPoolMXBean> list=ManagementFactory.getMemoryPoolMXBeans(); for(MemoryPoolMXBean mem:list){ System.out.println("Java 虚拟机启动以来或自峰值重置以来此内存池的峰值内存使用量"+mem.getPeakUsage()); System.out.println("返回此内存池的类型"+mem.getType()); System.out.println("内存使用量超过其阈值的次数"+ mem.getUsage()); } //Java 虚拟机内存系统的管理接口。 MemoryMXBean MemoryMXBean mem=(MemoryMXBean)ManagementFactory.getMemoryMXBean(); System.out.println(" 返回用于对象分配的堆的当前内存使用量"+mem.getHeapMemoryUsage()); System.out.println("Java 虚拟机使用的非堆内存的当前内存使用量"+mem.getNonHeapMemoryUsage()); // Java 虚拟机的编译系统的管理接口 CompilationMXBean CompilationMXBean com=(CompilationMXBean)ManagementFactory.getCompilationMXBean(); System.out.println("即时 (JIT) 编译器的名称"+com.getName()); System.out.println("在编译上花费的累积耗费时间的近似值(毫秒)"+com.getTotalCompilationTime()); //Java 虚拟机的类加载系统的管理接口 ClassLoadingMXBean ClassLoadingMXBean cl=(ClassLoadingMXBean)ManagementFactory.getClassLoadingMXBean(); System.out.println("当前加载到 Java 虚拟机中的类的数量"+cl.getLoadedClassCount()); System.out.println("Java 虚拟机开始执行到目前已经加载的类的总数"+cl.getTotalLoadedClassCount()); System.out.println("Java 虚拟机开始执行到目前已经卸载的类的总数"+cl.getUnloadedClassCount()); }} very good,你是我的偶像。 支持6楼,不知道用这个可不可以自己写一个JConsole 请教一个算法:计算N项的Fibonacci数列的和,其中第N项是数列中最大的不超过4百万的数 一个cache服务器的问题 还是概念不清楚,望牛人路过此处一解! 如何处理日期 请问JAVA中如何模拟发送一个键盘事件? 大神求救。为什么把一堆程序封装成方法之后出现编译出现需要.class 关于考试系统的问题,请大家多多帮忙! 请帮我翻译一下这个接口涵义的说明! 谢谢! 学习java的快速方法!!!100分封上,给答得最好的几个!! 高分求救,只要解决决不失言,一定高分奉送(100分) 设计商品销售碰到的问题。。。 Spring 的配置文件 解读????
http://improving.javaeye.com/blog/436317
import java.lang.management.CompilationMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.ThreadMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.MemoryPoolMXBean;
import java.util.List;public class JVM {
public static void main(String[] args) {
//Java 虚拟机线程系统的管理接口 ThreadMXBean
ThreadMXBean th=(ThreadMXBean)ManagementFactory.getThreadMXBean() ;
System.out.println("活动线程的当前数目"+th.getThreadCount());
System.out.println("返回活动守护线程的当前数目"+th.getDaemonThreadCount());
System.out.println("Java 虚拟机启动或峰值重置以来峰值活动线程计数"+th.getPeakThreadCount());
System.out.println("返回当前线程的总 CPU 时间"+th.getCurrentThreadUserTime());
System.out.println("当前线程在用户模式中执行的 CPU 时间"+th.getCurrentThreadUserTime());
//Java 虚拟机的运行时系统的管理接口。 RuntimeMXBean
RuntimeMXBean run=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();
System.out.println("正在运行的 Java 虚拟机的名称"+run.getName());
System.out.println("Java 虚拟机规范名称"+run.getSpecName());
System.out.println("返回 Java 库路径"+run.getLibraryPath());
System.out.println("系统类加载器用于搜索类文件的 Java 类路径"+run.getClassPath());
//用于操作系统的管理接口,Java 虚拟机在此操作系统上运行 OperatingSystemMXBean
OperatingSystemMXBean op=(OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean();
System.out.println("返回操作系统的架构"+op.getArch());
System.out.println("返回操作系统名称"+op.getName());
System.out.println("返回操作系统的版本"+op.getVersion());
System.out.println("Java 虚拟机可以使用的处理器数目"+op.getAvailableProcessors());
//内存池的管理接口。内存池表示由 Java 虚拟机管理的内存资源,
//由一个或多个内存管理器对内存池进行管理 MemoryPoolMXBean
List<MemoryPoolMXBean> list=ManagementFactory.getMemoryPoolMXBeans();
for(MemoryPoolMXBean mem:list){
System.out.println("Java 虚拟机启动以来或自峰值重置以来此内存池的峰值内存使用量"+mem.getPeakUsage());
System.out.println("返回此内存池的类型"+mem.getType());
System.out.println("内存使用量超过其阈值的次数"+ mem.getUsage());
}
//Java 虚拟机内存系统的管理接口。 MemoryMXBean
MemoryMXBean mem=(MemoryMXBean)ManagementFactory.getMemoryMXBean();
System.out.println(" 返回用于对象分配的堆的当前内存使用量"+mem.getHeapMemoryUsage());
System.out.println("Java 虚拟机使用的非堆内存的当前内存使用量"+mem.getNonHeapMemoryUsage());
// Java 虚拟机的编译系统的管理接口 CompilationMXBean
CompilationMXBean com=(CompilationMXBean)ManagementFactory.getCompilationMXBean();
System.out.println("即时 (JIT) 编译器的名称"+com.getName());
System.out.println("在编译上花费的累积耗费时间的近似值(毫秒)"+com.getTotalCompilationTime());
//Java 虚拟机的类加载系统的管理接口 ClassLoadingMXBean
ClassLoadingMXBean cl=(ClassLoadingMXBean)ManagementFactory.getClassLoadingMXBean();
System.out.println("当前加载到 Java 虚拟机中的类的数量"+cl.getLoadedClassCount());
System.out.println("Java 虚拟机开始执行到目前已经加载的类的总数"+cl.getTotalLoadedClassCount());
System.out.println("Java 虚拟机开始执行到目前已经卸载的类的总数"+cl.getUnloadedClassCount());
}
}
very good,你是我的偶像。