jconsole查看线程池内部对象在jvm内存变化
2017-05-05 15:18
120 查看
我们经常在使用线程时查看jvm的使用状况,以jconsole为例:
线程类MyRunnable :
线程池:
启动线程池,在之前加一个断点,留出时间打开jconsole:
打开C:\Program Files\Java\jdk1.7.0_79\bin目录下的jconsole.exe:
选择当前运行的线程。
放开断点,查看jconsole视图:
单击执行GC按钮:
可以看到执行GC之后线程池内部的MyRunnable对象被释放,调用了finalize,当对象被回收时此方法会被调用。
控制台打印:
线程类MyRunnable :
public class MyRunnable implements Runnable { @Override public void run() { System.out.println("run"); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub super.finalize(); System.err.println(Thread.currentThread().getName()+"-"+this.hashCode()+"-finalize"); } }
线程池:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class MyRunnableThreadPool { public static void main(String[] args) throws InterruptedException { Thread.sleep(1500); ExecutorService exe = Executors.newFixedThreadPool(30); for (int i = 0; i < 30; i++) { exe.execute(new MyRunnable()); } System.out.println("end"); } }
启动线程池,在之前加一个断点,留出时间打开jconsole:
打开C:\Program Files\Java\jdk1.7.0_79\bin目录下的jconsole.exe:
选择当前运行的线程。
放开断点,查看jconsole视图:
单击执行GC按钮:
可以看到执行GC之后线程池内部的MyRunnable对象被释放,调用了finalize,当对象被回收时此方法会被调用。
控制台打印:
相关文章推荐
- 查看JVM内存使用情况jconsole+weblogic9.2
- 对象实例化,jvm执行时内存变化,
- java 对象占用内存查看 以及JVM级别 方法修改等
- 如何查看Java对象占用JVM内存大小
- Java对象占JVM内存大小查看
- java 对象占用内存查看 以及JVM级别 方法修改等
- java 对象占用内存查看 以及JVM级别 方法修改等
- [Java] 查看java对象的内存占用情况--java 优化系列
- 认识JVM--第二篇-java对象内存模型
- 使用计算总内存大小的方法确定jvm中为对象分配的存储空间大小
- windows mobile进程查看器开发(四)—— 查看内存、内部存储和存储卡的使用情况
- 用tomcat自身携带功能查看JVM的内存占用量
- JVM内存状况查看方法和分析工具
- 查看 JVM 内存大小
- VC2005查看类的对象内存分布选项
- 查看JVM内存使用情况语句
- Java 内存泄露监控工具-- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
- 在Eclipse中查看JVM的内存使用情况
- .Net 2.0内存对象布局详析及与1.1变化比较
- VS 查看对象内存布局