Java虚拟机(总结)

目录

 

JVM虚拟机

1、虚拟机内存模型

2、垃圾回收

3、类加载

4、JDK用的是什么?新特性?

5、jvm工具


JVM虚拟机

1、虚拟机内存模型

(1)说说jvm运行数据区,即jvm内存模型?

(2)整体了解java虚拟机

2、垃圾回收

(1)什么是full gc,手动触发full gc?

(2)说一下垃圾收集器(例如cms等)

(3)垃圾回收器对什么做了可达性分析?过程中有木有出现暂停?

3、类加载

(1)讲一讲类加载,双亲委派机制,好处?

4、JDK用的是什么?新特性?

5、jvm工具

(1)怎么检测oom,jstack、jstat、jmap?

(2)如何打印线程堆栈信息?

参考:https://my.oschina.net/feichexia/blog/196575

(3)工具介绍

  •  jps:主要用来输出JVM中运行的进程状态信息。
    • 语法格式:jps [options] [hostid]
    • 如果不指定hostid就默认为当前主机或服务器。
    • 命令行参数选项说明如下:
      • -q 不输出类名、Jar名和传入main方法的参数
      • -m 输出传入main方法的参数
      • -l 输出main类或Jar的全限名
      • -v 输出传入JVM的参数
  • jstack: 主要用来查看某个Java进程内的线程堆栈信息。
    • 语法格式
      • jstack [option] pid
      • jstack [option] executable core
      • jstack [option] [server-id@]remote-hostname-or-ip
    • 命令行参数选项说明
      • -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
      • -m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)
  • jmap(Memory Map)和jhat(Java Heap Analysis Tool)
    • jmap用来查看堆内存使用状况,一般结合jhat使用。
    • 语法格式
      • jmap [option] pid
      • jmap [option] executable core
      • jmap [option] [server-id@]remote-hostname-or-ip
      • 如果运行在64位JVM上,可能需要指定-J-d64命令选项参数:jmap -permstat pid
    • 打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息.
    •  使用jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况。
  • 应用
    • 检测死锁
      • 首先利用jps查看进程id
      • 然后利用jstack查看进程的堆栈信息:jstack 进程id,查看deadlock的进程
  • 利用jstack查看进程状态信息:http://www.importnew.com/23601.html

猜你喜欢

转载自blog.csdn.net/qq_32133965/article/details/89136570