JVM知识点梳理

什么是JVM?

        JVM是java虚拟机的缩写 ,也是java程式可以实现跨平台的关键。

JVM部分需要知道什么东西?

        JVM的结构和功能、参数配置、GC回收机制、GC回收器极其优缺点。

JVM结构(栈,程序计数器,方法区,栈)

 

从Java源码开始,JVM需要把源码转化为字节码,每个线程(包括主线程)都会产生一个虚拟机栈,里面会存储引用变量以及参数信息。程序计数器记录每个线程中执行的位置,当它遇到没见过的类时候,就会跑去对该类进行加载,将类的方法名,成员变量,注解等信息存储到方法区中。当该类被使用,new出对象,则将new的对象放到堆中。由此构建出JVM的结构,其中,程序计数器和栈是每个线程私有的,即多个线程时就会有多个对应的程序计数器和栈。而方法区和堆是共享且唯一的。

图中还包括解释器和即时编译器,解释器的作用是把字节码解释称CPU能识别的机器码,但是它是一条一条的解释,当有循环时,它会把循环中的内容一遍一遍的解释,故此会影响效率。此时即时编译器就发挥了它的作用,它把这些循环重复多次的语句存储,避免解释器反复解释。

GC回收

GC回收是指对内存中不再使用的对象进行清除的操作,把它们的资源释放出来。

GC回收原理是通过可达性算法和三色标记法配合,根据算法找到根对象,然后沿着根对象找与之相关的对象,使用黑灰白三色标记,将已经标记的表示为黑色,正在标记的表示为灰色,未标记的表示为白色。最终检查完后,将所有白色的进行清除。

GC回收机制有三种方法:

        1.标记清除法

        2.标记整理法

        3.标记复制法

由上述解释可知,所谓标记,是将正在使用的对象进行标记,标记清除法的意思就是将未标记的进行清除,它的优点是快速,缺点就是,会形成内存碎片,因为没发保证正在使用的都是连续的。而标记整理法,是在标记清除法上加了一个整理的步骤,将不连续的区域整理成连续的。因此它解决了标记清除法产生内存碎片的问题,但是它的缺点就是会导致速度不如前者。于是产生了第三种标记复制法,它会产生两个内存区,“from”和“to”,它会把所有标记的内容复制到to区上,复制完后,就把原本的区域全部清除掉,清除完之后,会把from区和to区调换位置,后续操作依次。它解决了标记清除法和标记整理法的缺点,但是它的缺点是需要多一块区域,会比另外两个方法多占用内存资源。

标记清除法,现在的GC垃圾回收器都已经没有使用了。

标记整理法,常用于老年代。

标记复制法,常用于新生代。

上述提到两个新名词,老年代和新生代,这两个区都在堆中。其中新生代又划分为eden区和Survivor区(默认eden区和Survivor区大小比例为八比一,Survivor区包含两个区域,一个叫“from”一个叫“to”),所有新new的对象都会先在eden区创建,当eden区堆积满了之后,做垃圾回收,会把还存在的对象放入Survivor,当Survivor经过多次垃圾回收,依旧存在的对象就会进入老年代(默认操作15次)。因为新生代朝生暮死,大多数生命周期短,因此可以减少复制使用到的空间,故而标记复制法适用于新生代。又因为老年代默认为生命周期长,而且标记整理法中整理部分比较耗费时间,但是老年代的垃圾回收频率会低很多,故而老年代使用的是比较耗费时间的标记整理法。

垃圾回收器包括:Parallel GC、Concurrent Mark Sweep GC、G1 GC。

Paarllel GC:注重的是吞吐量。

Concurrent Mark Sweep GC:注重响应速度。

G1 GC:兼容吞吐量和响应速度。

上述不够完整,持续维护中……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/30188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的高精度打电话检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度打电话检测识别系统可用于日常生活中或野外来检测与定位打电话目标,利用深度学习算法可实现图片、视频、摄像头等方式的打电话目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检…

《C# 教程》菜鸟教程学习笔记

学习地址 ######C#有用的网站 C# Programming Guide - 介绍了有关关键的 C# 语言特征以及如何通过 .NET 框架访问 C# 的详细信息。Visual Studio - 下载作为 C# 集成开发环境的 Visual Studio 的最新版本。Go Mono - Mono 是一个允许开发人员简单地创建跨平台应用程序的软件平台…

【每日算法】【203. 移除链表元素】

☀️博客主页:CSDN博客主页 💨本文由 我是小狼君 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&…

Docker基本介绍

一、定义 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 解决了运行环境和配置问题的软件容器, 方便做持续集成并有助于整…

UnityVR--UIManager--UI管理1

目录 前言 UI节点的结构 需要用到的组件 1. CanvasGroup 2. Button等控件的OnClick()监听 3. EventTrigger 建立UI工具集 1. 管理UI节点 2. UIBase包含了以下的工具 建立分面板的管理工具——以主面板MainUi为例 前言 UI在项目中的重要性不言而喻,并且UI控件的…

软件设计师第4题

首先,我是备考2023年上半年的考试。 一、历年考试题 历年的考题如下,从表中分析可以看出,动态规划法、排序算法、回溯法、分治法是很大概率考察的算法,尤其是动态规划法,本身其理解难度较高,且可以出的题型…

【计网】第二章 物理层

文章目录 物理层一、物理层的基本概念二、数据通信的基础知识2.1 数据通信系统的模型2.2 有关信道的基本概念2.3 信道的极限容量2.3.1 奈奎斯特定理2.3.1 香农定理2.3.2 信噪比 三、物理层下面的传输媒体3.1 导引型传输媒体3.2 非导引型传输媒体 四、信道复用技术4.1 频分复用 …

【小沐学Python】Python实现在线电子书(Sphinx + readthedocs + github + Markdown)

文章目录 1、简介2、安装3、创建测试工程4、项目文件结构5、编译为本地文件6、编译为http服务7、更改样式主题8、支持markdown9、修改文档显示结构10、项目托管到github11、部署到ReadtheDocs结语 1、简介 Sphinx 是一个 文档生成器 ,您也可以把它看成一种工具&…

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 Proteus仿真小实验: STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 功能: 硬件组成:STC15W4K32S4单片机 LCD12864显示器4x4矩阵键盘HX711电子秤 1.单片机通…

操作教程:EasyCVR视频融合平台如何配置平台级联?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台可拓展性强、开放度高、部署轻快&…

NUCLEO-F411RE RT-Thread 体验 (3) - GCC环境 uart驱动的移植以及console的使用

NUCLEO-F411RE RT-Thread 体验 (3) - GCC环境 uart驱动的移植以及console的使用 1、准备工作 在第一节里,我们用stm32cubemx将pa2 pa3管脚配置成usart2,用于跟st-link虚拟串口的打印用,那么我们先重定向printf函数,看这条通道是…

2009年iMac装64位windows7

前言:单位领导会花屏的iMac(24寸 2009年初版)我捡来用,应该大约是在2020年安装了32位windows7,发现不安装显卡驱动便不会花屏死机,于是就当简单的上网机用着,毕竟iMac的显示屏还是蛮不错的。现在…

windows系统安装显卡驱动软件和CUDA11.1的详细教程

深度学习目标检测框架在进行图像计算时需要GPU进行加速,需要用到硬件GPU显卡,目标检测框架和硬件GPU建立联系需要通过①显卡驱动软件;②CUDA软件依次建立联系。这两个软件,可直接从NVIDIA官网下载,版本没有非常严格的需…

python获取某乎热搜数据并保存成Excel

python获取知乎热搜数据 一、获取目标、准备工作二、开始编码三、总结 一、获取目标、准备工作 1、获取目标: 本次获取教程目标:某乎热搜 2、准备工作 环境python3.xrequestspandas requests跟pandas为本次教程所需的库,requests用于模拟h…

WinDbg安装入坑3(C#)

由于作者水平有限,如有写得不对的地方,请指正。 使用WinDbg的过程中,坑特别的多,对版本要求比较严格,如: 1 32位应用程序导出的Dump文件要用32位的WinDbg打开,想要没有那么多的问题&#xf…

SpringCloud Eureka注册服务提供者(七)

这里我们在原来的服务提供者项目 microservice-student-provider-1001 上面直接修改&#xff1a; 首先pom.xml修改&#xff0c;加上eureka客户端依赖&#xff1a; <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>…

【正点原子STM32连载】 第三十二章 光敏传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

第三十二章 光敏传感器实验 本章&#xff0c;我们将学习使用STM32开发板板载的一个光敏传感器。我们还是要使用到ADC采集&#xff0c;通过ADC采集电压&#xff0c;获取光敏传感器的电阻变化&#xff0c;从而得出环境光线的变化&#xff0c;并在TFTLCD上面显示出来。 本章分为如…

VSCode 安装配置教程详解包含c++环境配置方法

vscode安装教程及c环境配置详解 vscode下载安装下载C扩展插件VScode C环境配置配置环境变量检查 MinGW 安装配置编译器&#xff1a;配置构建任务检查是否安装了编译器配置完毕 vscode下载安装 地址&#xff1a;官网下载地址 直接打开下载好的.exe文件进行安装即可&#xff0…

“暗网议会”如今已成为现实

图片来源:Marcin Balcerzak 最近&#xff0c;“暗网议会”已经成为了网络犯罪分子试图证明自己影响力的最新流行语&#xff0c;安全内部人士对这个词也很感兴趣。 上周五&#xff0c;臭名昭著的亲俄黑客组织Killnet在其电报威胁帖子中使用了这个词语。随后&#xff0c;twitte…

SPEC 2006 gcc version 8.3.0 (Uos 8.3.0.3-3+rebuild) x86_64 源码编译tools 错误处理笔记

编译tools 拷贝tools到安装目录 cp /mnt/iso/tools /opt/speccpu2006/ -r 执行编译 su rootcd /opt/speccpu2006/tools/src sh -x buildtools 错误 undefined reference to __alloca 编辑./make-3.82/glob/glob.c&#xff0c;注释掉以下宏判断 you should not run config…
最新文章