面试八股——JVM★

类加载

类加载器的定义

类加载器的类别

类装载的执行过程

类的装载过程:

加载:

验证:

准备:

这里设置初始值并不是传统意义的设置初始值(那个过程在初始化阶段)。

解析:

初始化:

使用:

类的回收(被垃圾器回收)

回收时机

垃圾定位——可达性分析法

可作为GC root的对象:

垃圾回收算法
标记清除算法

标记整理算法

先将存活对象移动到一起,然后清楚边界之外的垃圾。

优点:解决了内存碎片化问题。缺点:效率低。

复制算法 

开辟了一块新的内存空间,将存活对象按序复制过去,然后直接清空原来的内存空间。

优点:克服内存碎片化问题+效率较高。

缺点:需要两块内存空间,内存使用率低。

分代回收
回收过程

java8开始,堆空间被分为了新生代与老年代。

新创建的对象都要被存在Eden区:

GC种类

小结

垃圾回收器的类型
串行垃圾回收器

创建一个垃圾回收线程串行回收垃圾。

并行垃圾回收器(JDK8默认)

创建多个垃圾回收线程进行垃圾回收。

CMS(并发垃圾回收器)

G1垃圾回收器(JDK9之后默认,使用复制算法)

新生代的回收

并发标记阶段

混合收集阶段

其不仅会回收部分老年区,还回去回收其他的区,只要其回收价值够高。(左图为回收前,右图为回收后,将回收的区域集体复制到某些区域后,清楚待收集的地区。)

结束之后,开启新的新生代回收、并发标记、混合收集的循环阶段。

回收失败

如果上述回收方法赶不上对象新建方法,则会采用FULL GC(回收所有区域的垃圾)回收

强、软、弱、虚引用的回收

小结

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李廉洋;4.12现货黄金,美原油最新走势分析及策略。

现货黄金在美盘末将历史新高刷至2377美元/盎司。美国3月份PPI指数较上年同期上升2.1%,为11个月来的最高增幅,这份数据加之此前火爆的CPI指数,为美联储实现2%目标所面临的坎坷之路奠定了基础。不过,PPI报告中的细节让担心通胀再度加…

全面支持工业协议钡铼IOy系列模块无缝融入PLC及工业物联网架构

钡铼IOy系列模块作为工业控制领域的创新产品,以其卓越的性能和广泛的适用性,无缝融入PLC(可编程逻辑控制器)及工业物联网架构,为工业自动化领域带来了全新的可能性。下面我们将详细探讨钡铼IOy系列模块与PLC及工业物联…

图像分割:Pytorch实现UNet++进行医学细胞分割

图像分割:Pytorch实现UNet进行医学细胞分割 前言相关介绍项目结构具体步骤准备数据集读取数据集设置并解析相关参数定义网络模型定义损失函数定义优化器训练验证 参考 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容&#x…

【Golang学习笔记】从零开始搭建一个Web框架(三)

文章目录 分组控制分组嵌套中间件 前情提示: 【Golang学习笔记】从零开始搭建一个Web框架(一)-CSDN博客 【Golang学习笔记】从零开始搭建一个Web框架(二)-CSDN博客 分组控制 分组控制(Group Control)是 Web 框架应提供…

【算法刷题 | 回溯思想 01】4.11(回溯算法理论、组合、组合总和 ||| )

文章目录 回溯1.回溯算法理论基础1.1什么是回溯法?1.2回溯法的效率1.3回溯法解决的问题1.4如何理解回溯法?1.5回溯法模板 2.组合2.1问题2.2解法一:暴力解法(循环次数不确定)2.3解法二:回溯2.3.1回溯思路&am…

Unity Shader之数学篇

一、坐标系 1、二维笛卡尔坐标系 屏幕坐标系是二维笛卡尔坐标系,OpenGL的屏幕坐标系原点在左下角,DirectX的屏幕坐标系原点在左上角。 2、三维笛卡尔坐标系 三维笛卡尔坐标系要区分是左手坐标系还是右手坐标系。 左手坐标系:举起你的左手…

linnux文件服务

1.FTP:文件传输协议。 基础:控制端口(身份验证) command 21/tcp 数据端口: data 20/tcp FTP Server默认配置:yum -y install vsftpd (安装vsftpd) touch /var/ftp/abc.txt(创建文件) systemctl start vsftpd(启动文件) systemctl …

Word文档如何更改页面背景颜色?

在Microsoft Word中,设置页面颜色的方法有多种,以下为其中几种常用的方法:(为office2016版本操作) 方法一:使用主题颜色 1. 打开Word文档,在菜单栏中选择“设计”。 2. 在“设计”选项卡中&a…

泰山众筹:低门槛高回报的电商营销新模式

大家好,我是吴军,来自一家专注于软件开发的公司,担任产品经理一职。今天,我想与大家分享一种备受瞩目的商业模式——泰山众筹。 泰山众筹之所以能够在市场上迅速走红,其背后的原因值得我们深入探讨: 首先&…

idm线程越多越好吗 idm线程数多少合适

IDM(Internet Download Manager)是一款流行的下载管理软件,它支持多线程下载,这意味着它可以同时建立多个连接来下载文件的不同部分,从而提高下载速度。我们在使用IDM的时候总是有很多疑问,今天我们学习IDM…

游戏开发者必看:Perforce Helix Core 的功能特点及游戏开发中的常用工具、典型用例介绍

「不出海,即出局」随着全球化的加速发展,企业出海已成燎原之势。日前,2024 亚马逊云科技出海全球化论坛在深圳成功举办。龙智携手 Perforce 亮相游戏行业展区,展示了Perforce Helix Core如何与主流游戏开发引擎高效集成&#xff0…

Pytest精通指南(12)Parametrize源码拆解

文章目录 前言Parametrize 参数化Parametrize 源码分析Parametrize 使用说明一个参数的参数化多个参数的参数化验证类中有多个测试函数验证变量或函数传递参数化验证笛卡尔积拓展用法 前言 在 pytest 中,有两种常见的参数化方法: pytest.mark.parametriz…

哈希密码破解方法汇总

案例: 如何破译 254aa248acb47dd654ca3ea53f48c2c26 e93a1ec56258df7674c4 258df7674c4 该hash加密串的原文信息 步骤: 1)通过Hash Analyzer - TunnelsUP站点了解该hash加密串所使用的哈希加密算法类型。 可知,使用了 sha2-256 加密算法。 2) 访问example_hashes [hash…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之十一 简单给视频添加水印图片效果 一、简单介绍 二、简单给视频添加水印图片效果实现…

【Linux学习】初识Linux指令(二)

文章标题 1.rm 指令2.man指令3.nano指令4.cp指令5.mv指令6.alias指令7. cat与8.echo指令 ⚶文章简介 ⚶本篇文章继上篇文章Linux指令讲解,本篇文章主要会涉及到的指令会有:rm指令与 *(通配符)的搭配使用,man指令&…

专业SEO优化指南:设置网站关键词的详细步骤

在网站SEO优化的过程中,关键词的设置是提升网站排名的关键步骤之一。那么,作为一名专业的SEO人员,如何有效地进行关键词设置呢?以下是一些详细的步骤: 1. 确定网站的核心关键词。 这需要深入理解网站的主题或产品。通…

整体性学习

整体性学习的顺序: 1.获取 2.理解(明白)3.拓展(探究)4.纠错(调试)5.应用 测试伴随每一个过程 例如: 吃饭(去学习)–>点菜(学什么&#xff0c…

实时数据同步之Maxwell和Canal

文章目录 一、概述1、实时同步工具概述1.1 Maxwell 概述1.2 Canal概述 2、数据同步工作原理2.1 MySQL 主从复制过程2.2 两种工具工作原理 3、MySQL 的 binlog详解3.1 什么是 binlog3.2 binlog 的开启3.3 binlog 的分类设置 4、Maxwell和Canal对比5、环境安装 二、Maxwell 使用1…

日本极致产品力|一个战略符号打造年销售超4亿份的冰淇淋大单品

日本赤城乳业有一款冰棍——ガリガリ君(GariGarikun),凭借着自己的“纯粹”打入市场,几十年来它成为许多日本人的夏日必备。他让人记忆最深刻的是战略符号——ガリガリ君,让赤城乳业打造出年销售4亿份的冰淇淋大单品。它是如何做到的呢? 石油…

Day55 动态规划 part15

Day55 动态规划 part15 392.判断子序列 我的思路: 自己还是只能想到双指针法 解答: class Solution {public boolean isSubsequence(String s, String t) {if(s.length() 0) {return true;}if(s.length() > t.length() || t.length() 0) {return false;}ch…