jvm知识点总结(二)

Java8默认使用的垃圾收集器是什么?

Java8版本的Hotspot JVM,默认情况下使用的是并行垃圾收集器(Parallel GC)

如果CPU使用率飙升,如何排查?

1.先通过top定位到消耗最高的进程id

2.执行top -h pid单独监控该进程

3.在2中输入H,获取当前进程的所有线程,找到消耗最大的线程编号tid

4.jstack tid 对当前线程做dump,输出所有线程信息,在堆栈信息中找到原因

CMS,G1垃圾回收器三色标记

三色标记法是一种垃圾回收法,他可以让JVM不发生或仅短时间发生STW(stop the world),从而达到清除JVM垃圾的目的。

·白色:表示对象尚未被垃圾收集器访问过。显然在可达性分析刚刚开始的阶段,所有的对象都是 白色的,若在分析结束的阶段,仍然是白色的对象,即代表不可达。 ·黑色:表示对象已经被垃圾收集器访问过,且这个对象的所有引用都已经扫描过。黑色的对象代 表已经扫描过,它是安全存活的,如果有其他对象引用指向了黑色对象,无须重新扫描一遍。黑色对 象不可能直接(不经过灰色对象)指向某个白色对象。 ·灰色:表示对象已经被垃圾收集器访问过,但这个对象上至少存在一个引用还没有被扫描过。

讲一讲类加载和类加载器

一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七个阶段,其中验证、准备、解析三个部分统称、为连接(Linking)。

在加载阶段,Java虚拟机需要完成以下三件事情: 1)通过一个类的全限定名来获取定义此类的二进制字节流。 2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

执行类记载的代码是类加载器。

双亲委派机制

双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加 载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的 加载请求最终都应该传送到最顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请 求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。

使用双亲委派模型来组织类加载器之间的关系,一个显而易见的好处就是Java中的类随着它的类 加载器一起具备了一种带有优先级的层次关系。例如类java.lang.Object,它存放在rt.jar之中,无论哪一 个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此Object类 在程序的各种类加载器环境中都能够保证是同一个类。反之,如果没有使用双亲委派模型,都由各个 类加载器自行去加载的话,如果用户自己也编写了一个名为java.lang.Object的类,并放在程序的 ClassPath中,那系统中就会出现多个不同的Object类,Java类型体系中最基础的行为也就无从保证,应 用程序将会变得一片混乱。

G1收集器

堆空间比较大,垃圾优先,那块垃圾多先清理那一块。

(1)空间整合Region

(2)多线程+并发+可预测停顿

多线程是多个GC垃圾回收器。在并发标记阶段业务线程和GC线程同时运行,并发的时候减少停顿。

有什么手段排查OOM的问题?

JDK1.8推荐生产环境开启两个参数:

-XX: HeapDumpOutOfMemoryError 当OOM发生时自动dump堆内存信息

-XX: HeapDumpPath=/tmp/headump.hprof dump堆内存信息存放目录

VisualVM查看那个位置由于什么原因造成了OOM

(JHSDB,JConsole,ViualVM,Java Mission Control)

使用过那些jvm相关的工具?

jps: 可以列出正在运行的虚拟机进程,显示出PID。

jstat: 是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程[1]虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。

jinfo: 实时查看和调整虚拟机各项参数。

jmap: 生成堆转储快照(一般称为heapdump或dump文件。

jhat: 分析jmap生成的堆转储快照。

jstack: 生成虚拟机当前时刻的线程快照。

线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后台做些什么事情,或者等待着什么资源

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

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

相关文章

安装OceanBase的机器如果出现故障,应该如何处理

背景 OBD(OceanBase Deployer),是OceanBase社区版的专属安装部署工具。它支持命令行或白屏界面部署,将复杂的配置流程标准化,大大降低了集群部署的难度。 有用户在使用过程中提出问题——“当我所在的OBD机器…

OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 What‘s New

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 Whats New前言OceanBase 数据更新架构Whats NewOLAP 能力列存引擎旁路导入新向量化引擎物化视图OceanBase 分布式数据库【信创/国产化】- OceanBase V4.3 更新了什么 What’s…

Java在区块链开发中的作用及发展

Java在区块链开发中的作用以及发展 一、引言 随着信息技术的飞速发展,区块链技术作为一种新兴的去中心化分布式账本技术,正逐渐引起人们的广泛关注。区块链以其独特的不可篡改、去中心化、安全可信等特性,在数字货币、供应链管理、金融科技…

mac下安装python并编写脚本实现s3上传功能

mac下安装python并编写脚本实现s3上传功能 步骤一:安装 Python 31. 安装 Homebrew(如果尚未安装):2. 使用 Homebrew 安装 Python 3:3. 验证安装:4.安装boto3: 步骤二:编写 S3 上传脚…

【树莓派】yolov5 Lite,目标检测,行人检测入侵报警

延续之前的程序: https://qq742971636.blog.csdn.net/article/details/138172400 文章目录 播放声音pygame不出声音怎么办(调节音量)树莓派上的音乐播放器(可选)命令行直接放歌(尝试放mp3歌曲) …

nginx负载均衡策略

1、轮询(Round Robin)-默认 依次转发,适用于多台服务器性能相近 2、加权轮询(Weighted Round Robin) weight高的优先分配,适用于多台服务器性能相差较大 3、IP hash 基于客户端 IP 地址的负载均衡策略&a…

Windows 本地直接使用 SSH,SFTP 以及 SFTP下载文件到 Windows/mac 本地或上传(没有客户端时)

windows 本地打开 ssh 以及 sftp 等的方式 1.win(windows图标那个键) r 直接搜 然后从打开的位置运行 如果是打开 sftp 前面的 ssh 换一下成sftp 就行 直接从地址栏输入也可以直接转过去 通过 windows 的工具直接访问 sftp 后将文件下载到自己的windows 或 mac 上 先通过…

【C++】---STL之list的模拟实现

【C】---STL之list的模拟实现 一、list模拟实现思路二、结点类的实现三、list迭代器的实现1、ListIterator类2、构造函数3、operator*运算符重载5、operator->运算符重载6、operator!运算符重载7、operator运算符重载8、前置9、后置10、前置--11、后置-- 四、lis…

JAVAEE—HTTPS和ssl证书

0[toc] 什么是HTTPS HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况而HTTPS则是新采用加密的方式进行传输 为什么需要HTTPS 为什么要使用HTTPS呢?这…

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码,github仓库 使用vs编译源码,新建一个静态库项目(只会生成lib文件),想要dll的话就新建dll项目(有一个lib文件和dll文件) 把lua源码下面的文件夹都是,复制到vs项目中 lib目录是我手动…

配置etcd、apiserver使用的cpu和内存资源

etcd pod 默认使用的cpu和内存都是100M,当集群变大时,资源会不够用,导致异常,如: apiserver 默认使用cpu为250M k8s-master121 kubelet[31020]: E0425 14:41:54.026671 31020 controller.go:187] failed to update lease, error: etcdserver: request timed out kubelet[3…

四、搭建 FFmpeg,实战直播推流

目录 1、FFmpeg 简介 2、FFmpeg 项目组成 3、使用 ffmpeg 的方式分为两种: 5、FFmpeg 命令行 <

MongoDB聚合运算符:$sinh

MongoDB聚合运算符&#xff1a;$sinh 文章目录 MongoDB聚合运算符&#xff1a;$sinh语法使用举例双曲正弦值角度双曲正弦值弧度 $sinh聚合运算符用来计算双曲正弦值&#xff0c;返回以弧度为单位的指定表达式的双曲正弦值。 语法 { $sinh: <expression> }<expression…

【QEMU系统分析之启动篇(十七)】

系列文章目录 第十七章 QEMU系统仿真的显示初始化分析 文章目录 系列文章目录第十七章 QEMU系统仿真的显示初始化分析 前言一、QEMU是什么&#xff1f;二、QEMU系统仿真的启动分析1.系统仿真的初始化代码2.主循环数据初始化3. qemu_init_displays()init_displaystate()qemu_di…

4.25java项目小结

完成了头像的显示&#xff0c;能将头像设置圆形&#xff0c;从数据库传输头像&#xff0c;客户端接收并在界面上展示&#xff0c;并能从文件选择图片 、

Golang | Leetcode Golang题解之第49题字母异位词分组

题目&#xff1a; 题解&#xff1a; func groupAnagrams(strs []string) [][]string {mp : map[[26]int][]string{}for _, str : range strs {cnt : [26]int{}for _, b : range str {cnt[b-a]}mp[cnt] append(mp[cnt], str)}ans : make([][]string, 0, len(mp))for _, v : ra…

20240425金融读报:银行绿色数据收集ESG银行物联网智慧贵金属案例

1、银行与绿色产业之间风险-存在环保信息壁垒&#xff1a;收集政府何市场披露数据&#xff0c;生成ESG报告&#xff0c;作为评级、贷款依据或强控指标 2、 中国建设银行智慧贵金属-》同理可推智慧押品&#xff1a;1、梳理需求&#xff08;看现有贵金属操作流程&#xff0c;并分…

金融级国产化替代中间件有哪些?

过去&#xff0c;国内中间件市场一直由IBM、Oracle等国际大型企业所主导&#xff0c;这在一定程度上限制了对国内企业多样化和个性化需求的满足&#xff0c;尤其是在实现底层硬件与上层应用软件之间高效、精准匹配方面。面对日益复杂的国际局势&#xff0c;金融安全已成为国家整…

docker 安装 Sql Server

docker 安装 Sql Server 官网地址&#xff1a;https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?viewsql-server-ver16&tabscli&pivotscs1-bash 安装命令 sudo: 这是一个在 Linux 系统上以超级用户权限运行命令的关键字。它用于确保…

负载均衡集群——LVS

目录 1.LVS简介 2.LVS体系结构 3.LVS相关术语 4. LVS工作模式 5. LVS调度算法 6.LVS集群介绍 6.1 LVS-DR模式 6.2 LVS – NAT 模式 6.3 LVS – TUN 模式 7.LVS 集群构建 7.1 LVS/NAT 模式配置 实验操作步骤 步骤 1 Nginx1 和 Nginx2 配置 步骤 2 安装和配置 LVS …