摘要:
jstackjstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core... 阅读全文
随笔分类 - JVM
JVM调优命令-jinfo
2017-09-26 09:39 by 钰火, 747 阅读, 收藏, 编辑
摘要:
jinfoJVM Configuration info这个命令作用是实时查看和调整虚拟机运行参数。 之前的jps -v口令只能查看到显示指定的参数,如果想要查看未被显示指定的参数的值就要使用jinfo口令。【JVM配置参数调整查看】1234567891011121314151617[root@localhost bin]# jinfo -helpUsage: jinfo [option] ... 阅读全文
JVM调优命令-jhat
2017-09-25 10:06 by 钰火, 8045 阅读, 收藏, 编辑
摘要:
jhatJVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一般把服务器生成的dump文件复制到本地或其他机器上进行分析。【内存分析】123456789101112... 阅读全文
JVM调优命令-jmap
2017-09-22 11:12 by 钰火, 38672 阅读, 收藏, 编辑
摘要:
jmapJVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。【内存分析】1234567891011121... 阅读全文
细说方法区
2017-09-21 11:59 by 钰火, 4572 阅读, 收藏, 编辑
摘要:
引文 JDK7及之前版本的方法区(Method Area)和Java堆一样,是各个线程共享的内存区域,用于存储已经被虚拟机加载的类信息、常量、静态常量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但它有另外一个名字叫Non-Heap(非堆)。根据Java虚拟机规范的规定,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。细分 ... 阅读全文
JVM调优命令-jstat
2017-09-21 11:38 by 钰火, 6274 阅读, 收藏, 编辑
摘要:
JVM Statistics Monitoring Tool,是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。【性能分析】命令格式1jstat [options] VMID [interval] [count]参数[options] : 操作参数,一般使用 -gcutil 查看gc情况VMID : 本地虚拟机进程ID,即当前运行的jav... 阅读全文
JVM调优命令-jps
2017-09-21 11:29 by 钰火, 408 阅读, 收藏, 编辑
摘要:
JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。命令格式1jps [options] [hostid]options参数-l : 输出主类全名或jar路径-q : 只输出LVMID-m : 输出JVM启动时传递给main()的参数-v : 输出JVM启动时显示指定的JVM参数其中[options]、[hostid]参数也可以不写12345678[roo... 阅读全文
细说虚拟机栈
2017-09-21 10:37 by 钰火, 4867 阅读, 收藏, 编辑
摘要:
引文 对JVM不了解的请先访问文章《Java虚拟机运行时数据区》,相信会让你大致了解各个内存区域的对应功能。接着,我们开始细说虚拟机栈 前文中说到:“虚拟机栈是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法就会为每个方法生成一个栈帧(Stack Frame),用来存储局部变量表、操作数栈、动态链接、方法出口等信... 阅读全文
JVM运行时数据区
2017-09-21 10:20 by 钰火, 454 阅读, 收藏, 编辑
摘要:
java虚拟机运行时数据区,具体分为如下几个区域程序计数器(Program Counter Register) 程序计数器是一块很小的内存区域,存储了下一条需要执行的字节码指令的地址,此处的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。每个线程都有独立的程序计数器(PCR),在线程启动时会创建,多线程切换时可以恢复每一个线程的当前执行位置,所以线程之间不会相互影响... 阅读全文
JVM垃圾收集器
2017-09-20 11:04 by 钰火, 376 阅读, 收藏, 编辑
摘要:
1.垃圾回收器类型1.串行垃圾回收器(Serial Garbage Collector)2.并行垃圾回收器(Parallel Garbage Collector)3.并发标记扫描垃圾回收器(CMS Garbage Collector)4.G1垃圾回收器(G1 Garbage Collector)1.串行垃圾回收器(Serial Garbage Collector)串行垃圾回收器通过持有应用程序所有... 阅读全文
JVM垃圾回收算法
2017-09-20 11:03 by 钰火, 896 阅读, 收藏, 编辑
摘要:
1.堆的分代和区域(年轻代)Young Generation(eden、s0、s1 space) Minor GC(老年代)Old Generation (Tenured space) Major GC|| Full GC(永久代)Permanent Generation (Permanent space)【方法区(method area)】 Major GC本地化的Str... 阅读全文