jvm的面试回答
1、jvm由本地方法栈、虚拟机栈、方法区、程序计数器、堆组成,其中堆和方法区是线程间共享的,程序计数器、虚拟机栈和本地方法栈是线程私有的。
2、虚拟机栈:
保存每个java方法的调用、保存局部变量表、等
栈可能出现内存溢出,如果出现调用方法死循环,会出现栈溢出,stackoverflow。
3、oom和stackOverflow
OOM是内存溢出,内存不足线程太多导致的。
stackoverflow是栈溢出,调用的方法太深了会这样,可能是调用出现了死循环。
4、本地方法栈
用于保存Java调用native方法的,native就是非java代码实现的方法。
5、堆
5.1 所有类的对象和数组分配内存的地方。
5.2 各个线程之间贡献
5.3 堆中放的是对象,栈帧中放的是对象的地址,也就是内存引用。
5.4 方法结束后,堆中的对象会等到垃圾回收时被移除。
5.5 堆中分为新生代和老年代
新生代分为eden和survivor(s0/from、s1/to)
新生代的gc叫young gc/minor gc
老年代的gc叫major gc/full gc
6、TLAB
thread local allocation buffer
堆中有一部分是用来放线程私有的,在eden区,线程本地分配缓存区。
那threadLocal放在堆里,threadLocal的key是弱引用,但是value不是,在使用完后需要remove,不然会引起内存泄漏。
7、方法区(线程共享)
7.1 存储了每个类的结构信息、类型信息、常量、静态变量等等。
7.2 运行时常量池放在方法区中
JDK6、JDK7 时,方法区 就是 PermGen(永久代)。
JDK8 时,方法区就是 Metaspace(元空间)
垃圾回收
会考,不好记
哪些可以作为GC ROOT
1、虚拟机栈中的对象引用
2、本地方法栈中的本地方法对象的引用
3、方法区中引用数据类型的静态变量
4、方法区中常量对象的引用
5、被synchronized持有的对象引用
1、垃圾回收时的对象存活判断
1.1 引用计数法
每个对象保存一个引用计数器,记录对象被引用的次数
缺点是无法发现循环引用
1.2 可达性分析
以GC ROOT为起点,按照从上到下所有被连接的对象是否可达,没连接上的就会被回收。
GCRoot可以简单记成 虚拟机栈和方法栈里对象的引用以及方法区中静态变量和常量对象的引用,或者是synchronized的对象引用
1、标记-清除算法
第一步标记,用根可达性分析,标记处被引用的对象
第二部清除,清除没有被标记的
缺点是会造成内存碎片,可用内存不连续。
2、复制算法
将内存分成两块,每次只使用其中一块,垃圾回收的时候把s0的存活对象复制到s1上,再清空s0。
3、标记-压缩算法
标记-清除-压缩:将存活的对象都移动到一块。
4、分代收集算法
是目前大部分jvm垃圾回收使用的算法,将内存分成老年代和新生代,老年代使用标记整理算法,新生代使用复制算法。
垃圾回收器
垃圾回收器
1.8默认的是 UseParallelGC
ParallelGC 默认的是 Parallel Scavenge(新生代)+ Parallel Old(老年代)
1、serial收集器:串行回收
使用的是复制算法 新生代的垃圾回收器
2、serial Old收集器:串行回收
老年代的
垃圾回收器 | 使用的算法 | 作用在 | |
---|---|---|---|
serial收集器 | 串行回收 | 复制算法 | 新生代的垃圾回收器 |
serial Old收集器 | 串行回收 | 标记-压缩算法 | 老年代的 |
parNew | 并行 | 复制算法 | 新生代 |
Parallel Scavenge | 并行 | 复制 | 新生代 |
Parallel Old | 并行 | 标记-压缩 | 老年代 |
CMS | 并发 | 标记清除 | 老年代 |
G1 | 并发 并行 | 复制算法 标记-压缩 | 老年代、新生代 |
ZGC | 并发 | 标记-复制 | 老年代 |
CMS:初始标记(STW)-并发标记-重新标记-并发清除
停顿时间短
G1:将内存分成逻辑层面的region区域,属于分代垃圾回收器,区分老年代和新生代,region之间是复制算法,总体看是标记-压缩算法,可以避免内存碎片,
垃圾回收过程:新生代GC-老年代并发标记-混合回收
新生代GC:根可达性分析,存活对象从eden区复制到survivor区
老年代并发标记:在整个堆进行并发标记,回收完全为垃圾的老年代region,标记部分为垃圾的老年代region
混合回收:回收整个新生代,回收一部分老年代,按垃圾比例回收老年代的。
jdk1.8垃圾回收过程:
young GC:eden区满了就开始垃圾回收,将eden区存活的对象放到s0/s1区,每存活一次年龄+1,超过15就进老年代。
相关文章:
jvm的面试回答
1、jvm由本地方法栈、虚拟机栈、方法区、程序计数器、堆组成,其中堆和方法区是线程间共享的,程序计数器、虚拟机栈和本地方法栈是线程私有的。 2、虚拟机栈: 保存每个java方法的调用、保存局部变量表、等 栈可能出现内存溢出,如果…...
打不动的蓝桥杯
打不动的蓝桥杯 2024-4-13 今天的蓝桥杯打得很烂,8题写了4题,100分可能有20来分吧。我写了的题好像都很简单,没什么竞争力。又觉得我知道的东西不止这么点,没能发挥。 这次比赛,首先,有强烈的陌生感。pytho…...
学习笔记——C语言基本概念文件——(13)
1、文件操作 1.1、文件概念 文件:实现数据存储的载体 1.2、文件的分类 按照数据的组织形式分类: 1.字符文件/文本文件 2.二进制文件 按照用途分类: 1.系统文件 2.库文件--标准库文件/非标准库文件(第三方库) 3.用…...
【MySQL】事务篇
SueWakeup 个人主页:SueWakeup 系列专栏:学习技术栈 个性签名:保留赤子之心也许是种幸运吧 目录 本系列专栏 1. 什么是事务 2. 事务的特征 原子性(Atomicity) 一致性(Consistency) 隔离性&…...
tsconfig.json文件常用配置
最近在学ts,因为tsconfig的配置实在太多啦,所以写此文章用作记录,也作分享 作用? tsconfig.jsono是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译 初始化一个tsconfig文件 tsc -init配置参数解释 …...
【Linux】tcpdump P1 - 网络过滤选项
文章目录 选项 -D选项 -c X选项 -n选项 -s端口捕获 port选项 -w总结 tcpdump 实用程序用于捕获和分析网络流量。系统管理员可以使用它来查看实时流量或将输出保存到文件中稍后分析。本文将演示在日常使用 tcpdump时可能想要使用的几种常见选项。 选项 -D 使用-D 选项的 tcpdu…...
网络篇04 | 应用层 mqtt(物联网)
网络篇04 | 应用层 mqtt(物联网) 1. MQTT协议介绍1.1 MQTT简介1.2 MQTT协议设计规范1.3 MQTT协议主要特性 2 MQTT协议原理2.1 MQTT协议实现方式2.2 发布/订阅、主题、会话2.3 MQTT协议中的方法 3. MQTT协议数据包结构3.1 固定头(Fixed header…...
Transformer模型-decoder解码器,target mask目标掩码的简明介绍
今天介绍transformer模型的decoder解码器,target mask目标掩码 背景 解码器层是对前面文章中提到的子层的包装器。它接受位置嵌入的目标序列,并将它们通过带掩码的多头注意力机制传递。使用掩码是为了防止解码器查看序列中的下一个标记。它迫使模型仅使用…...
All in One:Prometheus 多实例数据统一管理最佳实践
作者:淡唯(啃唯)、阳其凯(逸陵) 引言 Prometheus 作为目前最主流的可观测开源项目之一,已经成为云原生监控的事实标准,被众多企业广泛应用。在使用 Prometheus 的时候,我们经常会遇…...
mysql报错-mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止和数据恢复
启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。 我的mysql版本是8.0.18 系统:win10 如何安装mysql,可以看我这一篇文章:mysql的安装 ---必会 - bigbigbrid - 博客园 (cn…...
Java开发从入门到精通(二十):Java的面向对象编程OOP:File文件操作的增删改查
Java大数据开发和安全开发 (一)Java的文件操作1.1 Java的File和IO流概念1.2 File类的使用1.2.1 创建File类的对象1.2.2 常用方法1:判断文件类型、获取文件信息1.2.3 常用方法2:创建文件、删除文件1.2.4 常用方法3:遍历文件夹 1.3 java File的方法递归1.3…...
10.list的模拟实现(普通迭代器和const迭代器的类模板)
1. list的介绍及使用 1.1 list的介绍 list的文档介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过…...
【电控笔记5】电流环速度环三环参数整定
旋转坐标系下的电压方程,由id和iq计算出ud和uq Lq:q轴电感 Ld:d轴电感 输入是电流,输出是电压? 内嵌式pmsm(ipmsm)模型建立: 其中: λf是转子磁场在定子绕组所产生的磁通链,为一常数,在psms中转子磁场非常稳定几乎不变。 ipmsm转矩方程式: 对永磁同步马达而言,使…...
AI克隆语音(基于GPT-SoVITS)
概述 使用GPT-SoVITS训练声音模型,实现文本转语音功能。可以模拟出语气,语速。如果数据质量足够高,可以达到非常相似的结果。相比于So-VITS-SVC需要的显卡配置更低,数据集更小(我的笔记本NVIDIA GeForce RTX 4050 Lap…...
小蚕爬树问题
小蚕爬树问题 问题描述: 编写一个函数 int day(int k,int m,int n),其功能是:返回小蚕需要多少天才能爬到树顶(树高 k 厘米,小蚕每天白天向上爬 m 厘米,每天晚上下滑 n 厘米,爬到树顶后不再下滑࿰…...
科研学习|科研软件——如何使用SmartPLS软件进行结构方程建模
SmartPLS是一种用于结构方程建模(SEM)的软件,它可以用于定量研究,尤其是在商业和社会科学领域中,如市场研究、管理研究、心理学研究等。 一、准备数据 在使用SmartPLS之前,您需要准备一个符合要求的数据集。…...
实用工具系列-ADB使用方式
作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(WPS二次开发QQ群:250325397),摸鱼吹牛嗨起来࿰…...
计算机网络书籍--《网络是怎样连接的》阅读笔记
第一章 浏览器生成信息 1.1 生成HTTP请求信息 1.1.1 URL Uniform Resource Locator, 统一资源定位符。就是网址。 不同的URL能够用来判断使用哪种功能来访问相应的数据,比如访问Web服务器就要用”http:”,而访问FTP服务器用”ftp:”。 FTPÿ…...
antd+vue——datepicker日期控件——禁用日期功能
需求:今天之前的日期禁用 <a-date-pickerv-model.trim"formNE.deliveryTime":disabled-date"disabledDate"valueFormat"YYYY-MM-DD"allowClearstyle"width: 100%" />禁用日期的范围: //时间范围 disab…...
技术分享 | Appium 用例录制
下载及安装 下载地址: github.com/appium/appi… 下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。 在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好…...
[蓝桥杯 2018 省 A] 付账问题
【蓝桥杯】付账问题 [蓝桥杯 2018 省 A] 付账问题 题目描述 几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。 现在有 n n n 个人出去吃饭,他们总共消费了 S S S 元。其中第 i i i 个人带了 a i a_i ai 元。幸运的是&#…...
设计模式|装饰器模式(Decorator Pattern)
文章目录 结构优缺点优点缺点适用场景示例装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许在不改变原始对象的基础上,动态地给对象添加新的功能或责任。这种模式是通过创建一个包装对象,也就是装饰器,来包裹真实的对象,然后在装饰器中添加新的行为或功能。这…...
发作性睡病有性别差异吗?
发作性睡病是一种特殊的睡眠障碍,以不可控制的嗜睡、猝倒发作、睡眠瘫痪、入睡前幻觉以及夜间睡眠紊乱为主要临床特点。关于发作性睡病是否存在性别差异,不同的研究和报道给出了不同的结论。 一方面,从生理角度来看,男性和女性在…...
ppt从零基础到高手【办公】
第一章:文字排版篇01演示文稿内容基密02文字操作规范03文字排版处理04复习&作业解析第二章:图形图片图表篇05图形化表达06图片艺术化07轻松玩转图表08高效工具&母版统一管理09复习&作业解析10轻松一刻-文字图形小技巧速学第三章:…...
文件上传下载
文章目录 文件上传下载文件上传文件下载 文件上传下载 HTTP请求会包含一个请求头,其中"Content-Type"字段告诉服务器正在发送什么类型的数据。根据发送的数据类型,浏览器和服务器会采取适应的处理方式。 "multipart/form-data"是一…...
C++11 新特性:新增算法
C11 在标准库中引入了一系列新的算法,这些新增的算法使我们的代码写起来更简洁方便。 下面是 C11 中新增加的一些重要算法的简要描述和使用方法: 1、非修改序列操作 std::all_of:检查范围内的所有元素是否都满足指定的谓词。std::any_of&a…...
c/c++普通for循环学习
学习一下 for 循环的几种不同方式,了解一下原理及差异 完整的测试代码参考 GitHub :for 循环测试代码 1 常用形态 对于 for 循环来说,最常用的形态如下 for (表达式1; 表达式2; 表达式3) {// code }流程图如下: 编写测试代码…...
操作系统组成部分
从1946年诞生第一台电子计算机。 冯诺依曼结构 冯诺依曼是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。 常见的操作系统有三种类型 单用户单任务操作系统:只支持一个用户和一个任务的执行,如DOS;单用…...
深入理解DES算法:原理、实现与应用
title: 深入理解DES算法:原理、实现与应用 date: 2024/4/14 21:30:21 updated: 2024/4/14 21:30:21 tags: DES加密对称加密分组密码密钥管理S盒P盒安全性分析替代算法 DES算法简介 历史 DES(Data Encryption Standard)算法是由IBM研发&…...
# 达梦sql查询 Sql 优化
达梦sql查询 Sql 优化 文章目录 达梦sql查询 Sql 优化注意点测试数据单表查询 Sort 语句优化优化过程 多表关联SORT 优化函数索引的使用 注意点 关于优化过程中工具的选用,推荐使用自带的DM Manage,其它工具在查看执行计划等时候不明确在执行计划中命中…...
自己做网站开微店可行吗/做百度推广的网络公司广州
症状:无法备份。 在 drop table 时报错: Location: AllocPageRef.cpp:62Expression: aid idSPID: 71Process ID: 4388 (这个是sqlserver 的进程) 消息 3624,级别 20,状态 1,第 1 行系统…...
php程序员网站开发建设/济南网站seo哪家公司好
——为了今天要写的内容,运行了将近7个小时的程序,在数据库中存储了1千万条数据。—— 今天要说的是mysql数据库的IF()函数的一个实例。具体场景如下,先看看表结构:CREATE TABLE message (id varchar(30) NOT NULL,title varchar(30) DEFAULT…...
可以做代销的网站都有哪些/网站品牌推广公司
欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】当用户请求一个网页的时候,如何让服务器把网页文件发送给用户?文件服务器首先我们要知道,用户在浏览器中看到的页面其实就是一个.html文件,就是我们上一篇文章时候撰写的...代码…...
怎么查看网站用什么做的/aso优化师
自动驾驶到底怎么了? 进入2021年,在驾驶辅助技术方面,随着算法的继续迭代、算力的持续提升、更多传感器的加入,在驾驶员保持时刻监管的情况下,无论是功能升级还是场景的突破,都已经取得了很大进展…...
wordpress 注释/今日头条权重查询
拼多多商家参加了平台活动后,就需要去建立一个营销账户并且进行充值,那么拼多多营销账户该如何进行提现呢?无法提现又是为什么? 拼多多营销账户如何提现? 在你的手机上打开拼多多app,菜单栏里有我的设置,并且点击&…...
9377 这种网站怎么做/北京官方seo搜索引擎优化推荐
在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入。本人经过一段时间的学习,对闭包的概念又有了新的理解。于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给读者提供学习的途径,…...