JVM
文章平均质量分 89
造火箭的小伙
知道的越多,不知道的越多。
展开
-
JVM中的内存区域
JVM内存区域JDK7版本及JDK7版本之前:java虚拟机在执行java程序的过程中会把他管理的内存划分为若干个不同的数据区域。线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存1. 程序计数器 程序计数器是一块较小的内存空间,可以看做是当前线程执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。 为了线程切换后能恢复到正确的执行位置原创 2021-02-03 11:03:59 · 108 阅读 · 0 评论 -
类加载机制(五)双亲委派模型,类的生命周期
类加载机制(五)类的生命周期类的加载过程CLass文件需要加载到虚拟机中才能运行和使用,那么虚拟机是如何加载这些Class文件呢?系统加载Class类型的文件主要三步:加载、连接、初始化。连接过程有可分为验证、准备、解析。加载(Loading)类加载过程的第一步,主要完成一下三个事情:通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据原创 2021-08-22 21:19:45 · 140 阅读 · 0 评论 -
JVM垃圾收集器(三)
JVM垃圾收集器(三)垃圾回收(GC)线程与应用线程保持相对独立,当系统需要执行垃圾回收任务时,先停止工作线程,然后命令GC线程工作,以串行模式工作的收集器,称为Serial Collector,即串行收集器;与之相对的是以并行模式工作的收集器,称为Paraller Collector,即并行收集器。并行收集:指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。并发收集:指用户线程与垃圾收集线程同时工作(不一定是并行的,会交替执行)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上。吞吐原创 2021-08-21 10:50:01 · 69 阅读 · 0 评论 -
Java内存回收(二)垃圾收集算法、分代垃圾回收
垃圾收集算法标记清除算法标记清除算法分为标记,清除两个步骤,首先标记算法对可回收的对象进行标记,然后垃圾收集器根据标记清除相应的内容。不是说将内存空间的字节清零,而是记录下这段内存的其实结束地址,下一次分配内存的时候,会直接覆盖这段内存。标记清除算法是最基础的算法,后续收集算法大多都是标记清除算法为基础的,对其缺点进行改进的主要有两个缺点:执行效率不稳定,如果Java堆中包含大量对象,并且其中大部分是需要被回收的,这时必须进行大量标记和清除的动作,导致标记和清除两个过程会的执行效率对随着数原创 2021-08-17 23:15:31 · 147 阅读 · 0 评论 -
JVM垃圾回收(一) 强引用、软引用、弱引用、虚引用
Java垃圾回收(一)如何判断一个对象可以被回收?引用计数算法如果一个对象被其他对象所引用,则该对象的引用计数+1,如果该对象被多次引用,则该对象的引用计数没被引用一次就+1,如果有对对象不在引用该对象,则该对象的引用计数-1,当该对象的引用计数为0时,说明该对象可以被回收。缺点:如果出现循环引用的情况,例如:两个对象互相引用,且没有其他对象引用他们,就会导致这两个对象无法被回收,从而出现内存泄漏的问题。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内原创 2021-08-17 17:16:55 · 250 阅读 · 0 评论