![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
ShawnYue_08
这个作者很懒,什么都没留下…
展开
-
8、垃圾回收器
文章目录评估GC性能指标Serial回收器:串行回收ParNew回收器:并行回收Parallel Scavenge回收器:吞吐量优先CMS回收器:低延迟G1回收器:区域化分代式GC日志分析评估GC性能指标吞吐量:运行用户代码的时间占总运行时间的比例暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间;内存占用:Java堆区所占内存的大小;存在实线的是:可以搭配使用的垃圾回收器;存在虚线的是:已经废弃或者即将废弃的组合;查看默认的垃圾回收器:-XX:+PrintCommandLineFl原创 2020-09-17 17:01:40 · 144 阅读 · 0 评论 -
7、垃圾回收相关概念(强引用、软引用、弱引用、虚引用)
文章目录System.gc()的理解内存溢出和内存泄漏Stop The World垃圾回收的并行与并发安全点与安全区域Java中的引用强引用软引用弱引用虚引用System.gc()的理解在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存;然而System.gc()调用附带一个免费声明,无法保证对垃圾收集器的调用;JVM实现者可以通过System.gc()调用来决定原创 2020-09-17 16:57:38 · 381 阅读 · 0 评论 -
6、垃圾回收概述、垃圾回收算法(可达性分析算法、标记清除算法、复制算法、标记压缩算法)
文章目录垃圾回收概述垃圾回收相关算法标记阶段:引用计数法标记阶段:可达性分析算法对象的finalization机制MAT的GC Roots溯源清除阶段:标记-清除算法清除阶段:复制算法清除阶段:标记-压缩算法小结分代收集算法增量收集算法分区算法垃圾回收概述关于垃圾收集的三个经典问题:哪些内存需要回收?什么时候回收?如何回收?什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占用的内存空间会一直保原创 2020-09-17 00:45:26 · 1279 阅读 · 0 评论 -
5、对象的实例化、内存布局、访问方式、String#intern()、字符串的拼接问题
文章目录对象的实例化对象的内存布局对象的访问定位StringString的基本特性String的内存分配字符串拼接操作intern的使用String#intern对象的实例化创建对象的步骤给对象的属性赋值的操作:1、属性的默认初始化;2、显式初始化;3、代码块中初始化;4、构造器中初始化。其中,2,3,4阶段都体现在创建对象的步骤中的第6步,执行init方法初始化。设置对象的对象头:将对象所属类(类的元数据信息)、对象的hashCode和对象的GC信息、锁信息等数据存储在对象的对象头。原创 2020-09-16 15:44:07 · 204 阅读 · 0 评论 -
4、运行时数据区线程共享区(方法区)
文章目录方法区栈、堆、方法区的交互关系方法区的理解设置方法区大小方法区的内部结构方法区的演进细节方法区栈、堆、方法区的交互关系方法区的理解对于HotSpotJVM而言,方法区还有一个别名,叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看做是一块独立于Java堆的内存空间。方法区(Method Area)与Java堆一样,是各个线程共享的内存区域;方法区在JVM启动时被创建,并且它的实际的物理内存空间和Java堆区一样都可以是不连续的;方法区的大小,和堆空间一样,可以选择原创 2020-09-16 10:12:46 · 755 阅读 · 0 评论 -
3、运行时数据区线程共享区域(堆)
文章目录堆堆的概述堆的细分内存结构设置堆内存大小和OOM年轻代与老年代图解对象分配和回收过程Minor GC、Major GC、Full GC的对比堆空间分代思想内存分配策略为对象分配内存:TLAB堆是分配对象的唯一选择吗堆堆的概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域;Java堆在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间;堆内存的大小是可以调节的;《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但是在逻辑上原创 2020-09-16 10:08:25 · 743 阅读 · 0 评论 -
2、运行时数据区线程私有区域(程序计数器、虚拟机栈(栈帧)、本地方法栈)
文章目录运行时数据区程序计数器虚拟机栈概述栈帧虚拟机栈的面试题本地方法栈运行时数据区不同的JVM实现对于内存的划分方式和管理机制存在部分差异,我们结合JVM虚拟机规范,来探讨经典JVM的内存布局。浅黄色为:线程私有;橙色为:线程共享。程序计数器Program Counter Register,程序计数器又称为PC寄存器。作用:PC寄存器用来存储指向下一条指令的地址,由执行引擎读取下一条指令。package org.westos.demo;/** * @author lwj * @da原创 2020-09-14 12:45:15 · 531 阅读 · 0 评论 -
1、类的加载过程、类的加载器、双亲委派机制、类的主动使用和被动使用
文章目录类的加载过程和类的加载器类的加载过程一、加载二、链接三、初始化类加载器一、类加载器的分类二、双亲委派机制三、双亲委派机制的优势四、类的主动使用和被动使用类的加载过程和类的加载器类的加载过程一、加载通过一个类的全限定类名获取定义此类的二进制字节流;将这个字节流所代表的静态存储结构,转换为方法区的运行时数据结构;在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。二、链接1、验证主要包括四种验证:文件格式验证,元数据验证,字节码原创 2020-09-13 16:24:29 · 249 阅读 · 0 评论