java获取JVM对象实例的个数和占用空间大小
2016-08-25 17:34
501 查看
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); String name = bean.getName(); int index = name.indexOf('@'); String pid = name.substring(0, index); //这里要区分操作系统 HotSpotVirtualMachine machine = (HotSpotVirtualMachine) new sun.tools.attach.WindowsAttachProvider().attachVirtualMachine(pid); InputStream is = machine.heapHisto("-all"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int readed; byte[] buff = new byte[1024]; while((readed = is.read(buff)) > 0) baos.write(buff, 0, readed); is.close(); machine.detach(); System.out.println(baos);
输出:
num #instances #bytes class name ---------------------------------------------- 1: 19474 2107032 [C 2: 524 2080784 [I 3: 7500 1026288 <methodKlass> 4: 7500 924248 <constMethodKlass> 5: 564 624576 <constantPoolKlass> 6: 1581 441592 [B 7: 564 403464 <instanceKlassKlass> 8: 504 394880 <constantPoolCacheKlass> 9: 10176 244224 java.lang.String 10: 3500 84000 java.lang.StringBuilder 11: 635 77456 java.lang.Class
相关文章推荐
- JVM —— Java 对象占用空间大小计算
- JVM —— Java 对象占用空间大小计算
- 获取JAVA对象占用的内存大小
- 如何查看Java对象占用JVM内存大小
- Java对象占用内存空间的大小
- java中获取对象所占用的内存大小
- 获取python对象占用空间的大小
- JVM概念中的Java对象的大小,以及三种引用类型的定义与区分
- C#获取文件夹/文件的大小以及占用空间
- 如何用 SQL 语句获取某个 ACCESS 表占用的磁盘空间大小?
- db2中获取某个表/索引占用空间的大小
- JVM概念之Java对象的大小与引用类型
- java如何获取对象在内存中的大小
- 获取普通Java对象大小
- JVM虚拟机基础:Java对象大小与类型详解
- 关于Java的泛型在所声明的对象中如何获取class或者实例的方法的总结
- 获取普通Java对象大小
- java jvm字节占用空间分析
- 获取本地程序安装后占用空间大小
- VC++实现获取文件占用空间大小的两种方法(非文件大小)