JVM
想飞的盗版鱼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM(九)--关于一些常见的面试题
JVM(九)–关于一些常见的面试题1,GC什么时候开始?minor gc新生代分为一个eden区还有两个survivor,每次使用的时候只使用eden和survivor,当这两个空间存满了以后,就会触发minor gc,把仍然存活的放到另一个survivor中。当survivor中的对象每熬过一次gc就会加1,当年龄达到某个值时就会变为老年代。major gc老年代满了以后,会触发major gc。担保机制 :在发生minor gc之前,虚拟机都会先检查老年代最大的可用的连续空间是否大于新生代所原创 2020-07-03 22:32:33 · 257 阅读 · 0 评论 -
JVM(八)--关于反射
JVM(八)–关于反射写在前面:什么是java反射机制?我们又为什么要学它?当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。我们认为java并不是动态语言,但是它却有一个非常突出的动态相关机制,俗称:反射。反射就是指程序在运行的时候可以知道一个类的自身信息。对于任何一个类:可以知道这个类的属性和方法。对于任何一个对象:可以调用这个对象的任何一个方法和属性。1. 什么是反射机制?Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一原创 2020-07-03 21:29:01 · 321 阅读 · 0 评论 -
JVM(七)--双亲委派模型
JVM(七)–双亲委派模型类加载器:虚拟机设计团队把类的加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。什么是类加载器?简答的说,就是根据指定的全限定名将class文件加载到jvm内存,转为Class对象。(将类信息通过类装载器(ClassLoader)加载并初始化生成Class模板放入运行时数据区(方法区)中)类装载器ClassLoader:负责加载class文原创 2020-07-03 17:02:48 · 218 阅读 · 0 评论 -
JVM(六)--类加载机制
JVM(六)–类加载机制一 什么是类的加载:类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。二 类加载的时机:(1)类加载过程的顺序:类的整个生命周期:加载、验证、准备、解析、初始化、使用和卸载,7个阶段。其中:验原创 2020-07-03 11:21:48 · 190 阅读 · 0 评论 -
JVM(五)--内存泄露与内存溢出
JVM(五)–内存泄露与内存溢出内存溢出:是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出(比如一个桶装满了水,当放进一个苹果时桶的水正常,但是当你放进一个大石头,水就会溢出)。内存泄露:是你没有及时清理内存垃圾,导致系统无法再给你提供内存资源(内存资源耗尽)==>也就是堆上分配的内存没有释放,从而失去对其控制。这样会造成程序能使用的内存越来越少,导致系统运行速度减慢,严重情况是使机器宕掉。内存泄露就是存在一些被分配的对象,此对象有2种特征:①对象是可达的,即在有向图中原创 2020-07-02 19:13:15 · 278 阅读 · 0 评论 -
JVM(四)--垃圾收集器
JVM(四)–垃圾收集器一、垃圾收集器:图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。注意:Serial+CMS 和 ParNew+Serial Old这两种搭配不建议使用。并发与并行:并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态并发:指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能回交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个CPU上1. Serial 收集器:Serial收集器是最基本、发展历史最悠久原创 2020-07-02 18:36:26 · 286 阅读 · 0 评论 -
JVM(三)--垃圾收集算法
JVM(三)–垃圾收集算法这篇博客的内容包括:一、垃圾收集算法:1,标记——清除算法:2,复制算法:3,标记——整理算法:4,分代收集算法:二、涉及到的问题:1,标记清除,标记整理,复制算法分别是什么,各有什么缺点2,新生代和老年代各用什么算法?3,为什么要划分新生代和老年代?4,新生代分为什么?年轻代为什么分为Eden和Survior区?5,新生代和老年代的年龄阈值是多少?初识GC自动垃圾回收机制,简单来说就是寻找 Java堆中的无用对象。打个比方:你的房间是原创 2020-07-01 21:33:50 · 326 阅读 · 0 评论 -
JVM(二)--对象已死?和引用问题
JVM(二)–对象已死?和引用问题写在前面:java内存运行时区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行者出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具有确定性,在这几个内存内就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的原创 2020-07-01 17:13:21 · 387 阅读 · 0 评论 -
JVM(一)--JVM的内存区域划分以及相关知识点
JVM(一)–JVM的内存区域划分以及相关知识点一、JVM的内存区域是怎么划分的?JVM结构图JVM = 类加载器 + 执行引擎 + 运行时数据区类加载器(Class Loader):把硬盘上的class文件加载到JVM中的运行时数据区域,它不负责这个类文件是否能够执行执行引擎(Execution Engine):负责这个类文件是否能够执行。执行字节码,或者执行执行本地方法运行时数据区:JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些原创 2020-06-30 21:46:25 · 1109 阅读 · 0 评论
分享