JVM
文章平均质量分 82
没头脑遇到不高兴
Java开发
展开
-
JVM内存结构概述
本节将会介绍一下JVM的内存结构,JVM运行时数据区的各个组成部分:堆,方法区,程序计数器,Java虚拟机栈,本地方法栈,还会对Java堆的分代划分做个简单的介绍。目录前言JVM是什么JVM内存结构概览运行时数据区程序计数器Java虚拟机栈本地方法栈方法区运行时常量池Java堆直接内存前言JVM是Java中比较难理解和掌握的一部分,也是面试...原创 2019-08-20 23:32:58 · 4872 阅读 · 0 评论 -
JVM字节码指令集大全及其介绍
本节将会着重介绍一下JVM中的指令集、Java是如何跨平台的、JVM指令集参考手册等内容。目录Java是怎么跨平台的平台无关的基石JVM字节码指令介绍字节码与数据类型加载和存储指令算术指令类型转换指令对象创建与访问指令操作数栈管理指令控制转移指令方法调用和返回指令异常处理指令同步指令JVM指令集大全Java是怎么跨平台的我们上计算...原创 2019-08-22 23:39:48 · 10043 阅读 · 5 评论 -
深入理解Java虚拟机栈的栈帧
本节将会介绍一下Java虚拟机栈中的栈帧,会对栈帧的组成部分(局部变量表、操作数栈、动态链接、方法出口)分别进行介绍,最后还会通过javap命令反解析编译后的.class文件,进行分析方法执行时的局部变量表、操作数栈等。目录Java虚拟机栈概述局部变量表操作数栈动态连接方法的返回地址结合javap命令理解栈帧Java虚拟机栈概述Java虚拟机栈(Java Vir...原创 2019-08-25 00:05:48 · 16814 阅读 · 12 评论 -
Java对象的创建、内存布局及访问定位
对象的创建虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化,若没有则先进行类加载。如果没有加载,需要先进行类加载。对象内存分配:类加载检查通过后,虚拟机为新生对象分配内存,对象所需内存大小在类加载完成后便可完全确定。分配内存的任务等同于从堆中分出一块确定大小的内存。根据Java堆是否规整,分配内存的方式分为如下两种:指...原创 2019-08-27 23:02:26 · 542 阅读 · 1 评论 -
Java四种引用类型: 强引用、弱引用、软引用、虚引用
1、强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来弱化引用,如下:...转载 2019-08-12 17:59:23 · 3375 阅读 · 1 评论 -
判断对象是否可回收、垃圾回收算法
本节将会介绍下判断对象是否都能回收的两种方式:引用计数法、可达性分析,另外会介绍一下常用的垃圾回收算法:标记清除算法,复制算法,标记整理算法,分代回收算法。目录对象是否可回收引用计数算法可达性分析算法对象从生存到死亡回收方法区垃圾回收算法标记-清除算法复制算法标记-整理算法分代收集算法对象是否可回收我们谈论的垃圾收集(Garbage Collec...原创 2019-08-29 22:00:00 · 3095 阅读 · 0 评论 -
常用垃圾收集器介绍
本节将会介绍一下HotSpot虚拟机中的常用垃圾收集器:Serial,ParNew,Parallel Scavenge,Serial Old,Parallel Old,CMS,G1,会对每个垃圾收集器的概念和常用参数做下介绍。目录概述Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器...原创 2019-09-07 17:23:30 · 1723 阅读 · 1 评论 -
内存分配与回收策略及MinorGC、MajorGC、FullGC介绍
本节将会介绍一下:对象的内存分配与回收策略;对象何时进入新生代、老年代;MinorGC、MajorGC、FullGC的定义区别和触发条件;还有通过图示展示了GC的过程。目录对象内存分配与回收策略对象何时进入新生代、老年代三种GC介绍MinorGCMajor GC/Full GC:图示GC过程对象内存分配与回收策略对象的内存分配,往大方向讲,就是在堆上分配〔但也可...原创 2019-09-10 13:56:26 · 3444 阅读 · 0 评论 -
JVM常用参数选项介绍
目录JVM参数选项类型介绍标准参数选项-X参数选项-XX参数选项JVM参数选项如何设置打印设置的XX选项及值堆、栈、方法区等内存大小设置OutofMemory相关的选项垃圾收集器相关选项GC日志相关选项其他参数通过Java代码获取JVM参数JVM参数选项类型介绍关于JDK8的选项参数可以参考官网:https://docs.oracle.co...原创 2019-09-13 22:58:50 · 1437 阅读 · 0 评论 -
JDK常用命令jps、jinfo、jstat的使用介绍
概述JDK的bin目录下提供了很多命令工具,比如java.exe,javap.exe,javac.exe。。。。。。这些命令由jdk/lib/tools.jar类库中提供的,是对tools.jar中的类的封装。我们主要介绍一下JVM中处理运行日志、异常堆栈、GC日志、线程快照(threaddump / javacore文件)、堆转储快照(heapdump/hprof文件)等信息的相关常用命令(...原创 2019-09-16 23:29:21 · 1446 阅读 · 0 评论 -
使用jmap和MAT进行堆内存溢出分析
jmap:Java内存映像工具jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。另外,还有几种方式获取dump文件:使用JVM参数选项-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,通过-XX:HeapDumpPath=path 设置dump文件路径(有时...原创 2019-09-19 16:50:27 · 3467 阅读 · 0 评论 -
jstack配合top命令分析CPU飙高、程序死锁问题
jstack:Java堆栈跟踪工具jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿...原创 2019-09-25 14:03:56 · 1985 阅读 · 0 评论 -
jvisualvm配合Visual GC插件监控Java应用程序
本节将会介绍一下jvisualvm的特性及作用、各个功能是如何使用的、最后会介绍jvisualvm的插件Visual GC的安装及使用。目录jvisualvm介绍jvisualvm使用介绍Visual GC插件安装及使用jvisualvm介绍VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行...原创 2019-10-16 11:22:35 · 2140 阅读 · 0 评论 -
GC日志介绍
本节将会介绍一下JVM常用的GC日志相关的参数,然后会对各个收集器的GC日志的各个部分做个详细的介绍。JVM的GC日志参数在我的前面的博客《JVM常用参数选项介绍》中,已经介绍了很多的GC日志相关的JVM参数,我们这里就用了下面几个参数,设置JVM参数的方式里面也有介绍,如果想了解更多可以看下那篇博客。-XX:+PrintGCDetails在发生垃圾回收时打印内存回收详细的日志,并在...原创 2019-10-30 16:34:13 · 1541 阅读 · 0 评论 -
GC日志可视化分析工具GCeasy和GCViewer
上节介绍了GC日志的打印及含义,但是GC日志看起来比较麻烦,本节将会介绍一下GC日志可视化分析工具GCeasy和GCviewer。通过GC日志可视化分析工具,我们可以很方便的看到JVM各个分代的内存使用情况、垃圾回收次数、垃圾回收的原因、垃圾回收占用的时间、吞吐量等,这些指标在我们进行JVM调优的时候是很有用的。GCeasy介绍官网地址:https://gceasy.io/,GCeasy是...原创 2019-10-30 17:59:44 · 26653 阅读 · 7 评论 -
JVM垃圾收集器GC调优
本节将会介绍一下GC调优的目标,GC调优的准则,GC调优按照什么步骤进行,以及常用的Parallel GC、CMS GC、G1 GC的调优准则及调优案例。目录GC调优概述GC调优的目标:GC调优准则GC调优步骤Parallel收集器GC调优CMS收集器GC调优G1收集器GC调优GC调优概述对JVM垃圾收集器进行调优之前,一定要先了解JVM内存结构、各个垃圾...原创 2019-11-15 00:13:43 · 896 阅读 · 0 评论