目录
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