JVM
文章平均质量分 94
深入理解Java虚拟机,主要介绍JVM垃圾回收机制,JVM的调优
码农飞哥
csdn博客专家,讯飞程序员,写作8年,变现数十万
展开
-
【高效编码】简单全面JDK的监控命令,看这一篇就够了!!日拱一卒
你真的了解jstat命令么原创 2021-05-24 13:00:58 · 3361 阅读 · 21 评论 -
JVM09-类加载过程
这一篇我们来学习一下JVM中的类加载过程。说到类的加载过程,我们需要先了解一下JVM中类的生命周期。在JVM中类的生命周期有七个阶段。分别是:加载(Loading):加载是通过类加载器从不同的地方加载进二进制字节流验证(Verification):验证阶段是为了确保Class文件的字节流中包含的信息是否符合《JVM虚拟机规范》的全部约束要求。准备(Preparation):准备阶段是为静态资源分配内存,并赋初始值解析(Resolution) :解析阶段是Java虚拟机将常量池内的符号引用替换成直接原创 2020-07-06 22:21:45 · 2259 阅读 · 0 评论 -
JVM08-虚拟机故障处理之可视化故障处理工具JConsole工具
JConsole是一款基于JMX(Java Management Extensions)的可视化监视、管理工具。它主要是通过JMX的MBean对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,典型的如中间件大多也是基于JMX来实现管理和监控的。原创 2020-06-09 12:14:54 · 2336 阅读 · 0 评论 -
JVM07-虚拟机故障处理之命令行工具
本文主要介绍了几种比较实用的处理虚拟机故障的命令行工具,工具本身的使用是非常简单的。这是需要在工作中灵活使用。原创 2020-06-04 13:49:04 · 2409 阅读 · 0 评论 -
JVM06-经典垃圾收集器
本文主要介绍了JVM七种经典的收集器做完了详细的说明。之所以要有这么多收集器,是因为没有一种收集器是完美的。在JDK1.5 推出来具有划时代意义的CMS收集器,它的特点就是并发收集,低停顿。而JDK1.7推出了收集器的集大成者---G1收集器。它的特点就是**并发收集,可预测的停顿,不会产生碎片化**。原创 2020-06-02 19:54:39 · 2339 阅读 · 0 评论 -
JVM05-垃圾收集算法
本文简单的介绍了JVM中几个基本的垃圾回收算法,主要是标记-清除算法,标记-复制算法和标记-整理算法。每个算法都有各自的优缺点。一般而言新生代采用标记-清除算法和标记-复制算法居多,老年代会采用标记-整理算法。原创 2020-06-01 14:48:23 · 2277 阅读 · 0 评论 -
JVM04-JVM中内存溢出(包括内存泄露)以及其处理方法
本文首先介绍了堆内存溢出(OutOfMemoryError)发生的场景以及处理方式,OutOfMemoryError发生的场景主要就是系统创建了大量的对象,并且这些对象是有效的(即保证GC Roots到对象之间有可达路径)。然后,介绍了栈内存异常(StackOverflowError)的发生场景以及处理方式,StackOverflowError发生的场景主要是线程调用栈深度超过了虚拟机运行的栈深度。最后,介绍了方法区的内存溢出。需要注意的是JDK1.8中完全移除了永久代,取而代之的是元空间。原创 2020-05-28 20:32:20 · 4801 阅读 · 0 评论 -
JVM02-JVM的对象创建以及访问方式
本文首先介绍了JVM中对象的创建过程,接着就是介绍对象的内存布局,最后就是说到了对象的访问方式,其中对象的创建过程比较重要的一块内容就是分配内存原创 2020-05-26 18:59:15 · 2151 阅读 · 0 评论 -
JVM03--JVM垃圾收集机制的一些基本概念
前言今天来学习下与JVM垃圾收集机制相关的一些基本概念。如何判断对象是否存活垃圾收集器首要的任务的任务就是判断哪些对象是存活的,哪些对象已经死去了(这里死去的意思是对象不再被任何途径使用)。引用计数算法引用计数算法是在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能被使用的对象。引用计数算法的缺点就是很难解决对象之间相互循环引用的问题。可达性分析算法通过一系列称为“GC Roots”的根对象作为起始节点集,从这原创 2020-05-23 16:23:11 · 2164 阅读 · 0 评论 -
JVM01---Java中的内存区域以及重点介绍堆与栈
本文首先介绍Java中的数据类型,无非就是八种基本数据类型和引用类型,接着重点介绍了堆和栈的知识,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈。而堆是为栈进行数据存储服务,说白了堆就是一块共享的内存。不过,正是因为堆和栈的分离的思想,才使得Java的垃圾回收成为可能。接着就是详细介绍了JVM执行Java程序时将内存划分的区域。主要还是两类,一类是线程私有的,生命周期与线程的生命周期相同, 一类是线程共享的。主要是Java堆,这一块是垃圾收集器管理的主要区域。原创 2020-05-14 21:25:39 · 2240 阅读 · 0 评论