
jvm
云哥Y
技术源于实践,技术改变世界!
展开
-
jvm(七)垃圾收集器
垃圾收集器上一章介绍了垃圾回收算法,但是算法只是理论的一种可行性方案,还需要实际落地才行。于是乎,就有了好几种基于垃圾回收算法而实现的垃圾回收器。从图中可以看出,一些算法收集器适用新生代,另一些算法收集器适用老年代。1.Serial收集器这是一种单线程收集器,不仅仅意味着它只会使用一个CPU或者一个收集线程去完成垃圾收集工作,更重要的是其在进行垃圾收集的时候需要暂停其他线程。优点:简...原创 2020-01-09 18:32:06 · 201 阅读 · 0 评论 -
jvm(四)从设计者角度分析堆内存划分结构
还记得运行时数据区的区域划分吗?再来回顾一下。我们现在知道了方法区和堆是所有线程共享的区域,并且它们的生命周期跟jvm相同。存储结构我们现在懂了,那么不禁会想一个问题:万一数据存满了怎么办?一些垃圾数据怎么清理的?这就是通常我们所了解到的垃圾回收了。因为大部分对象都是存储在堆中的,所以我们通常了解的垃圾回收也都是指的堆内存。我们现在可以将方法区和堆单独拎出来,然后站在设计者的角度来分析堆内...原创 2020-01-07 22:15:15 · 230 阅读 · 0 评论 -
jvm(三)方法区、堆和虚拟机栈的指向关系
方法区、堆和虚拟机栈这三块区域都是存在一定联系的,下面来一一分析下。栈指向堆什么情况下,会存在栈指向堆呢?看一个代码:private void A(){ User user=new User(); //todo}线程在执行A方法时,一定是在虚拟机栈中完成,而引用变量user会存放在局部变量表中,真实的user对象存放在堆中,这时候就是典型的栈中元素指向堆中的对象。方法区指向堆什...原创 2020-01-06 22:35:20 · 902 阅读 · 2 评论 -
jvm(一)class文件如何加载到jvm
编译好的class文件如何被加载到jvm中?相信只要去钻研的小伙伴们都会产生这个疑问,下面我就来谈谈我个人的理解。首先,官网上是分为这么几个步骤:加载、链接以及初始化。为了方便理解,我这里采用图解来描述。装载(Load)这个装载我们并不陌生,因为spring初始化bean之前也会存在这个过程。在装载里面其实主要完成以下三件事情:通过一个类的全限定名获取定义此类的二进制字节流。说白...原创 2020-01-06 20:20:42 · 1139 阅读 · 0 评论 -
【内存溢出了怎么办?】分析定位,解决问题
导出内存映射文件1、内存溢出自动导出参数配置:#当发生内存溢出,导出heap-XX:+HeapDumpOnOutOfMemoryError #导出到当前路径下-XX:HeapDumpPath=./ 还是以上章节堆内存溢出为例,先在IDEA里修改jvm参数。执行heap方法后,堆内存溢出暴露出来,并且heap也被导出。进入项目所在目录,可以找到该文件。2、使用jm...原创 2019-12-08 14:54:03 · 533 阅读 · 0 评论 -
jvm(五)方法区、堆和虚拟机栈内存溢出
先问下大家,你们写代码碰到内存溢出的情况多吗?应该不多吧,反正我是碰到的少。但是呢,万一真碰到了,然后刚好需要由你来解决,这个时候你的心里肯定慌了,啥玩意,得从哪下手。下面就来假设出现了内存溢出,然后一步一步找到解决办法。jvm内存模型构造堆内存溢出这个其实很好构建,写个死循环代码,然后不停的产生对象,把堆撑爆了,不就堆内存溢出了。核心方法 /** * 为了让堆内存溢出快速...原创 2019-12-07 23:22:05 · 889 阅读 · 0 评论 -
jvm(二)运行时数据区
什么是JVM?什么是运行时数据区? 程序计数器 指向当前线程正在执行的字节码地址或行号。 思考:程序执行完了,不就可以了吗?为什么还要去记录它? 我们知道java执行的最小单位是线程,而线程是CPU去调度的,CPU采用的是时间片策略,并且是抢占式的。例如线程A执行一半挂起了,这时线程B开始执行,执行完之后,线程A又继续去执行。每个线程都有一个程序计数器,这时候,线程A就得从挂起...原创 2018-06-26 22:16:03 · 427 阅读 · 0 评论 -
jvm(六)垃圾回收算法
什么样的对象需要被GC判断回收算法 1》引用计数法:在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器就+1,任何时刻计数器为0的对象就是不可能再被使用的对象。但是会出现相互循环引用的问题。比如A引用B,B引用A,A和B里的计数器都是1,导致A和B永远都回收不了。 2》可达性分析:从GC Roots为根节点向下搜索,搜索所走过的路径成为引用链,当一个对象到GC Roots没...原创 2018-06-28 19:30:58 · 154 阅读 · 0 评论