JVM
文章平均质量分 91
总结分享JVM知识
归去来 兮
初心不忘,始终方得
展开
-
JVM入门到精通一篇就够了
入门到精通到调优原创 2024-04-03 12:59:59 · 862 阅读 · 0 评论 -
静态连接、动态连接、静态分派、动态分派、单分派、多分派、虚方法、非虚方法
静态连接、动态连接、静态分派、动态分派、单分派、多分派、虚方法、非虚方法,这些定义指的是什么?有什么关系原创 2021-03-08 16:09:09 · 1088 阅读 · 0 评论 -
双亲委派模型与类加载器
双亲委派模型与类加载器写在最前一.类加载器1.什么是类加载器2.类加载器的作用3.常见的类加载器二.双亲委派模型1.为什么需要双亲委派模型2.什么是双亲委派模型3.双亲委派模型的工作过程4.双亲委派模型的优点5.破坏双亲委派模型全文总结写在最前我们都知道类都是通过类加载器被加载进虚拟机中的,那这个类加载器有哪些呢?我们平时写的代码又是通过什么类加载器被加载进虚拟机中的呢?类加载器的工作模式又是什么呢?带着疑问一起去学习下双亲委派模型与类加载器。一.类加载器1.什么是类加载器我们都知道java文件的原创 2021-03-07 14:10:29 · 655 阅读 · 1 评论 -
详解java对象创建的过程
Java对象是怎么从代码一步步变成堆中一块内存的,这篇文章会详细介绍这个过程原创 2021-03-06 21:15:12 · 618 阅读 · 0 评论 -
JVM类加载过程
java文件被编译成class文件后需要经过加载--->验证--->准备--->解析--->初始化,这个过程后才能被使用。原创 2021-03-06 18:44:22 · 593 阅读 · 1 评论 -
class文件结构详解
写在最前:学习class文件结构不像学习JVM内存结构、垃圾收集器那样,可以对我们写代码时有很多帮助,学习了JVM内存结构,我们在配置虚拟机参数时就会有更全面的考虑,写代码时就可以注意到代码的的优化空间,学习了垃圾收集器,让我们可以根据服务器的配置,更好的选择出适合程序最大吞吐量的收集器,更好的根据服务器硬件配置出合适的参数,学习class呢,则更多的是为了让我们知其然,也知其所以然,让我们知道我们写出的代码在JVM里面到底是怎么运行的,这部分内容会相对枯燥,白话多一些,这里主要分两个部分来详细讲述clas原创 2021-03-02 17:16:20 · 1275 阅读 · 0 评论 -
虚拟机中的经典垃圾收集器及常用参数解析(Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1)
主要总结jvm中的经典垃圾收集器,如Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1等,对使用场景、虚拟机参数设置等进行总结分析。原创 2021-02-25 22:13:11 · 1280 阅读 · 0 评论 -
JVM中的垃圾收集算法详解(标记清除算法、标记复制算法、标记整理算法)
垃圾收集算法详解说到垃圾收集器必须要提的就是垃圾收集算法,因为所有的垃圾收集器都是基于垃圾收集算法实现的,垃圾收集算法是垃圾收集器的方法论,了解了这些方法论,对垃圾收集器的工作原理也就清楚了。下面介绍下jvm中我们用到的垃圾收集算法标记-清除算法什么是标记-清除算法?最早出现也是最基础的垃圾收集算法便是“标记-清除算法”该算法分为标记、清除两部分,回收对象时先标记待清除对象,标记完成后清除这些被标记的对象(也可以标记存活对象,清除未被标记的对象),标记的过程就是判定对象是否是垃圾的过程(使用可达原创 2021-02-25 15:02:57 · 3197 阅读 · 2 评论 -
JVM是如何判定对象为垃圾的(可达性分析算法)
引子:被判定为垃圾的对象或者内存区域会被垃圾收集器回收。那么什么样的对象或者内存区域会被判定为垃圾呢?下面就要说起经常作为垃圾判定依据的可达性分析算法与引用计数法了。这两种算法,都是经常被用作垃圾判定的算法,下面说下这两种算法。 引用计数法为对象添加一个引用计数器,当有一个对象引用了该对象时,引用计数器就加一,当引用失效时引用计数器就减一,当引用计数器的值为零时,就说明该对象变成了垃圾。可达性分析算法从一系列被称为“GC Roots”的节点集根据引用关系向下搜索,搜索过程所原创 2021-02-20 17:34:00 · 2162 阅读 · 0 评论 -
JVM内存结构详细总结(结合自身使用经历介绍各个知识点使用场景)
详细介绍了JVM的内存划分,内存划分的由来等,老少皆宜原创 2021-02-07 19:47:43 · 784 阅读 · 0 评论 -
java死循环为什么不会OOM
疑问:java死循环中无限生成对象会不会OOM?答案:有可能会有可能不会。1.先说会的场景,虚拟机配置:-Xmx10M -Xms10M代码如下:public class TestHeapOom { static class OOMObject{ } public static void main(String[] args){ List<OOMObject> list = new ArrayList<OOMObject>();原创 2020-12-08 20:01:08 · 1158 阅读 · 0 评论 -
java.lang.OutOfMemoryError: GC overhead limit exceeded原因及解决方法
java.lang.OutOfMemoryError: GC overhead limit exceeded原因及解决方法问题复现:11-23日生产推送数据时,发生该错误,没有其他操作.解释STW:jvm在执行垃圾回收线程时,其他线程都会被迫停止,只有垃圾收集线程执行完毕,其他线程才会恢复,这期间会有很少的等待时间,这个过程就是stw。错误含义:该错误表示cpu在98%(默认值)的时间内都在处理jvm的垃圾收集,且堆中回收到的内存仍是低于2%,这是系统就会报GC overhead limit exce原创 2020-11-24 10:38:27 · 15674 阅读 · 0 评论 -
方法在栈帧中的执行
方法在栈帧中的执行(jdk8)1.虚拟机栈组成部分jvm虚拟机(HotSpot)主要组成部分:程序计数器、方法区、虚拟机栈、本地方法栈、堆。其中程序计数器与虚拟机栈、本地方法栈是线程私有,随着线程的创建产生,随着线程消亡而消失。方法区与堆则是线程共享的区域。2.栈有哪些组成部分?栈的组成部分是一个个的栈帧,java中方法的调用对应的就是栈帧的入栈以及出栈操作(方法调用一次就会对应一次入栈),栈是线程私有、读写速度较快,但内存较小、默认大小1024kb,因为是线程私有的,所以每个线程都可以设置自己原创 2020-11-13 16:46:12 · 771 阅读 · 0 评论