当前位置: 首页 > news >正文

建设网站那家公司好/做关键词排名好的公司

建设网站那家公司好,做关键词排名好的公司,网站建设 经营范围,网站忧化 优帮云这里写目录标题JVM的组成部分1.类装载子系统1.1一个类加载到JVM的过程1.2类加载机制1.3为什么设计双亲委派机制1.4怎么打破双亲委派机制2.运行时数据区2.1线程私有及共享2.2JVM内存区结构2.3JVM参数设置经验3.Java对象的生命周期3.1.对象的创建3.2.对象大小的计算(6…

这里写目录标题

  • JVM的组成部分
  • 1.类装载子系统
      • 1.1一个类加载到JVM的过程
      • 1.2类加载机制
      • 1.3为什么设计双亲委派机制
      • 1.4怎么打破双亲委派机制
  • 2.运行时数据区
    • 2.1线程私有及共享
    • 2.2JVM内存区结构
    • 2.3JVM参数设置经验
  • 3.Java对象的生命周期
    • 3.1.对象的创建
    • 3.2.对象大小的计算(64位)
    • 3.3.对象在内存上的分配
    • 3.4.对象的回收
  • 4.垃圾收集器和收集算法
    • 4.1分代收集理论:
    • 4.2垃圾收集算法:
    • 4.3 Serial:(需要STW)
    • 4.4 Serial Old:
    • 4.5 Paralle:(需要STW)
    • 4.6 Paralle Old:
    • 4.7ParNew:
    • 4.8 CMS:
    • 4.9 垃圾收集算法底层实现:
    • 4.10 记忆集和卡表:
    • 4.11 G1垃圾收集器:
    • 4.12 ZGC:
    • 4.13 如何选择垃圾收集器?

JVM的组成部分

在这里插入图片描述

  1. 类装载子系统:将磁盘文件加载到运行时数据区的方法区
  2. 运行时数据区:常说的JVM内存区
  3. 执行引擎:将字节码翻译成底层指令交给CPU执行
  4. 本地库接口:执行引擎需要借助本地库接口实现将指令交给CPU执行

1.类装载子系统

1.1一个类加载到JVM的过程

加载:将磁盘上的字节码文件通过IO读入方法区
验证:验证字节码格式正确性
准备:类的静态变量赋值默认值,分配内存
解析:符号引用替换为直接引用(静态方法执行内存所在的指针)
初始化:对类的静态变量赋值指定值,执行静态代码块

1.2类加载机制

双亲委派机制:类加载时先判断自己有没有加载过,如果没有加载就委派父类执行同样的过程,如果父类没有加载不到在执行自行加载
类加载器

  • 引导类加载器
  • 扩展类加载器
  • app类加载器

类加载器定义:在Java代码的Lancher类中构建了扩展类加载器和app类加载,父子关系也是在这里构建,引导类加载器在C中构建的,所以在Java中体现就是null

1.3为什么设计双亲委派机制

沙箱安全机制:jdk中的类不能被程序员修改
避免类的重复加载:一个类只会被一个加载器加载一次

1.4怎么打破双亲委派机制

重新类加载方法,判断如果是自定义类,就指定自定义类加载器加载,如果不是就使用原来的机制。

2.运行时数据区

在这里插入图片描述

2.1线程私有及共享

私有:栈、本地方法栈、程序计数器
共享:堆、方法区

2.2JVM内存区结构

程序计数器:记录着当前线程的程序执行位置
本地方法栈:虚拟机调用native方法
:局部变量表(存局部变量)、操作数栈(供变量计算)、动态链接(将方法指向内存中真正的方法指针)、方法出口
:几乎所有的对象都在这里分配
方法区:用于存储加载后的类信息、常量、静态变量、编译后的代码

2.3JVM参数设置经验

线程栈:-Xss 每个线程栈的大小,这个参数越小,那么一个线程运行的方法就越少,而虚拟机内部运行的线程数变多
堆:尽量指定堆的大小参数一致避免扩容;分析对象在内存中的分布尽量让对象在年轻代被回收减少full gc次数。
(方法区)元空间:元空间默认为21m,元空间满了之后会触发full gc,所以尽量设置值

3.Java对象的生命周期

3.1.对象的创建

  • 类加载检查:当遇到new关键字时,先判断常量池中能否找到类的符号引用
  • 分配内存:对象所需的内存,在类加载后就能确定。直接为对象分配确定大小的内存
  • 初始化零值:程序能访问的数据,设置对应字段的零值
  • 设置对象头:对象头包含:Mark word,Klass pointer(对象执行类元信息的指针)
  • 执行Init方法:按照程序员的意愿进行属性的赋值,和执行构造方法

3.2.对象大小的计算(64位)

对象头 :

  • (header)Markword:8字节
  • Klass pointer:开启指针压缩(默认开启)4字节

对象数据:

  • 基本数据类型:占数据类型大小
  • 对象、字符串(引用指针):开启指针压缩 4字节
  • 数组:数组长度 4 字节(只要是数组,不区分数组的类型)

对象填充:

  • 保证对象大小是8的倍数,不够时填充

3.3.对象在内存上的分配

对象在栈上分配:栈上分配依赖与逃逸分析和标量替换。

  • 逃逸分析:分析对象作用域,是否只在本地方法使用,无外部引用
  • 标量替换:栈上没有大块连续的内存,所以JVM不会直接创建对象,而是将成员变量分解为被方法使用的变量,存在栈帧寄存器

对象在堆上分配

  • Eden区:正常对象放在Eden区
  • 老年代:对象满足一定条件会分配到老年代

大对象:超过JVM设置的大对象参数值
长期存活对象:经过多次minorGC后存活的对象
对象动态年龄判断:一批对象的总大小超过survivor区域内存大小的50%。那最大年龄的一批对象进入老年代。
老年代空间分配担保:老年代的可用空间小于年轻代所有对象之和

3.4.对象的回收

1.回收那些对象?

  • 引用计数法:对象存在引用,计数+1,引用消失计数减1,不能判断互相引用
  • 可达性分析算法:从GCRoots节点向下搜索引用的对象,未被标记到的是垃圾对象
    2.GC Roots对象:本地方法栈变量、静态变量(局部变量和全局变量即类中定义的变量)
    3.常见的引用类型
  • 强引用:普通变量引用
  • 弱引用:弱引用类型对象包裹
  • 软引用:软引用对象包裹
  • 虚引用:最弱的引用关系

4.垃圾收集器和收集算法

4.1分代收集理论:

  • 根据年龄带不同,选择不同的垃圾收集算法

4.2垃圾收集算法:

  • 标记复制:将存活的对象复制到另一个区域(适合年轻代S0,S1)
  • 标记清楚:标记垃圾对象清除(或者反过来)会产生内存碎片
  • 标记整理:同标记清楚,只是垃圾对象清除后会整理内存空间(适合来年代)

在这里插入图片描述

4.3 Serial:(需要STW)

单线程收集器,进行垃圾收集工作时需要暂停其它所有工作线程

4.4 Serial Old:

和Serial收集器一样,一个用于年轻代,一个用于老年代

4.5 Paralle:(需要STW)

多线程收集器,进行垃圾收集工作时由多个线程进行

4.6 Paralle Old:

和Paralle收集器一样,但是Paralle用于年轻代,Paralle Old用于老年代

4.7ParNew:

多线程收集器,和Paralle相同,但是ParNew可以和CMS收集器配合使用

4.8 CMS:

第一次基本上实现了用户线程和垃圾收集线程同时工作
工作过程:

  • 初始标记:通过GCRoots查找引用对象,速度很快。需要STW
  • 并发标记:通过GCRoots直接引用对象查找其它的引用,可以和用户线程同时运行
  • 重新标记:重新标记是为了修正并发标记阶段用户线程导致的对象变动,主要用到了三色标记
  • 并发清理:用户线程和垃圾收集线程同时运行,回收垃圾对象
  • 并发重置:重置本次GC过程中标记的对象

4.9 垃圾收集算法底层实现:

三色标记:

  • 黑色:对象存活,且所有关系都已经扫描
  • 灰色:至少有一个引用对象未扫描
  • 白色:分析开始阶段都是白色,如果分析结束对象仍然是白色,代表对象是垃圾对象
    漏标对象处理:
  • 增量更新:当一个黑色对象插入新的引用指向一个白色对象时,先将引用记录保存。等并发标记结束后,重新扫描。
  • 原始快照(SATB):当一个灰色对象删除一个指向白色对象时,将要删除的引用记录下来

增量跟新和原始快照中记录的引用,通过写屏障实现
写屏障:在赋值前(赋值对象引用,或赋值引用null)后,加入一些处理

4.10 记忆集和卡表:

当涉及跨代对象引用会收时,不直接扫描跨代区域,而是引入卡表。将存在跨代指针的对象所在卡页(卡表中的元素)表示为1,表示该元素变脏,GC时只收集卡表变脏的元素加入GCRoots中

4.11 G1垃圾收集器:

概念: 面向服务器的垃圾收集器,主要针对多核大容量内存的机器
区域划分: G1保留了年轻代和来年代的概念,但是没有物理上的隔阂。针对于大对象存放,G1增加了Humongous区专门放大对象。G1收集器将堆划分为大小相等的独立区域Region,Region默认大小是堆内存的1/2048,可以使用参数指定。
垃圾收集分类:

  • Young GC: 不同于其它收集器,在Eden区满了就做Young GC,而不是先判断当前Eden区满了后所做GC花费的时间,如果还不够设置的停顿时间,设置更多的Region为Eden区,直到下次满了之后时间也符合。
  • Mixed GC:老年代的堆占有率达到参数设置时触发,回收所有的Young和部分Old以及大对象区,G1垃圾收集器优先做Mixed GC在回收对象时采用复制方法,如果剩余的Region不足以复制,就会产生Full GC.
  • Full GC:停止程序采用单线程标记、清理、压缩
    G1调优关键参数:调节-XX:MaxGCPauseMills GC停顿时间设置

4.12 ZGC:

特点:基于内存布局,暂停时不设置分代
区域划分

  • 小型Region:固定2M,用于放置小于256k的小对象
  • 中型Region:固定32M
  • 大型Region:容量不固定,可以动态变化

4.13 如何选择垃圾收集器?

总结:.如果内存小于100M使用Serial,如果内存小于4G可以使用paralle,内存介于4-8G可以用ParNew+CMS
8G以上可以用G1,几百G以上用ZGC

相关文章:

JVM整体分析篇

这里写目录标题JVM的组成部分1.类装载子系统1.1一个类加载到JVM的过程1.2类加载机制1.3为什么设计双亲委派机制1.4怎么打破双亲委派机制2.运行时数据区2.1线程私有及共享2.2JVM内存区结构2.3JVM参数设置经验3.Java对象的生命周期3.1.对象的创建3.2.对象大小的计算(6…...

【Python入门第十七天】Python While 循环

Python 循环 Python 有两个原始的循环命令&#xff1a; while 循环for 循环 while 循环 如果使用 while 循环&#xff0c;只要条件为真&#xff0c;我们就可以执行一组语句。 实例 只要 i 小于 7&#xff0c;打印 i&#xff1a; i 1 while i < 7:print(i)i 1运行实…...

怎样激发读者好奇心?短视频营销之场景化

目录 激发读者好奇心&#xff1f;四个小技巧帮你搞定 1.省略法 2.欲言又止法: 3.问句法:就是用疑问的形式引起别人的好奇。 4.反差法 选择合适的主题。 利用场景化效果 使用滤镜。 如何提高用户的留存率。 1、设置一个有趣的话题。 2、用好道具。 3、多用竖屏。 什…...

【LeetCode】剑指 Offer 14- II. 剪绳子 II p96 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/ 1. 题目介绍&#xff08;14- II. 剪绳子 II&#xff09; 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n都是整数&#xff0c;n>1并且m>1&#xff09;&…...

【红黑树】红黑树插入操作相关的细节和疑难拆解分析

本文就红黑树的插入操作进行细致到每一个小步骤的解析。1&#xff0c;成员变量本红黑树使用了三叉链结构&#xff0c;使用的时候尤其要记得处理指向父亲的指针。为何在节点的构造函数中&#xff0c;默认节点的颜色为红色&#xff1f;因为考虑到红黑树的性质&#xff08;对于每个…...

字符串匹配--strstr函数的模拟实现思路和代码

一&#xff0c;strstr函数 原型&#xff1a; const char * strstr ( const char * str1, const char * str2 );char * strstr ( char * str1, const char * str2 ); strstr是一个字符串匹配函数&#xff0c;在str1中去寻找str2&#xff0c;如果找到&#xff0c;返回str2在…...

【ArcGIS Pro二次开发】(7):地图(Map)的基本操作

地图是ArcGIS Pro中的基础起点&#xff0c;也是大多数工程的基础。主要用于显示表示空间数据的图层。 一、地图(Map)的基本操作示例 1、获取当前地图 var map MapView.Active.Map; 2、获取一级图层 var lys map.Layers; 用于获取地图中的单一图层&#xff0c;以及图层组…...

python 自动化测试 pytest 的使用

pytest 是一款以python为开发语言的第三方测试&#xff0c;主要特点如下&#xff1a; 比自带的 unittest 更简洁高效&#xff0c;兼容 unittest框架 支持参数化 可以更精确的控制要测试的测试用例 丰富的插件&#xff0c;已有300多个各种各样的插件&#xff0c;也可自定义扩…...

闭包(回顾)

概念作用保护作用保存作用优缺点命名空间 概念 闭包(closure)指有权访问另一个函数作用域中变量的函数 — Javacript高级程序设计 p309 简单理解&#xff0c;一个作用域可以访问另一个函数内部的私有变量 // 其中 test就是一个闭包 function fn(){var num 10function test …...

利用好这两个方法,服务型企业缺成本票不再难解决!

现代服务业属于人才密集型和技术型类别&#xff0c;其中囊括了不少技术&#xff0c;知识&#xff0c;智力服务等产业&#xff1a;信息技术&#xff0c;文化创意&#xff0c;营销策划&#xff0c;广告设计&#xff0c;以及咨询&#xff0c;商务和法律服务。 在金税三期完善之前…...

前端面试编程题(异步调度,Promise实现、占用空间大小、渲染虚拟节点、实现for of)

目录 异步调度问题 题目一 答案 题目二 答案 递归输出 题目一 答案 Promise相关 题目一 答案 占用空间大小 题目一 答案 渲染虚拟节点 题目一 答案 实现for of 题目一 答案 异步调度问题 题目一 1.实现一个带并发限制的异步调度Scheduler&#xff0c;保证同…...

复旦团队发布国内首个模型MOSS 类ChatGPT

复旦团队发布国内首个模型MOSS 类ChatGPT 首先看到这个标题&#xff0c;还有这个名字&#xff0c;我是正经&#xff08;zhen jing&#xff09;的 &#xff08;bu shi 流浪地球&#xff1f;550W&#xff1f;不了解的可以把550W倒过来写&#xff0c;就懂了 看到新闻里的一些图…...

5.35 综合案例2.0 -称重数据上传云端

综合案例2.0 - 称重数据上传云端案例说明连线功能实现1.阿里云平台连接代码应用开发3.1新建‘普通项目’3.2关联产品和设备3.3新建‘移动应用’3.4添加组件3.5配置组件信息3.6保存预览案例说明 使用hx711串口模块称重,结合IOT studio制作手机APP远程控制并采集物体重量。 hx7…...

如何让人机对话更自然?

来源&#xff1a;投稿 作者&#xff1a;顾相欢 编辑&#xff1a;学姐 AAAI-2022|定制对话的人设和知识背景 原文标题&#xff1a; Call for Customized Conversation: Customized Conversation Grounding Persona and Knowledge 原文链接&#xff1a; https://arxiv.org/ab…...

Python每日一练(20230224)

目录 1. 列表奇偶拆分 ★ 2. 二叉树的后序遍历 ★★ 3. 接雨水 ★★★ 附录 二叉树 特点 性质 特殊二叉树 满二叉树 完全二叉树 完全二叉树性质 二叉树的遍历 1. 列表奇偶拆分 【问题描述】 输入一个列表&#xff0c;包含若干个整数&#xff08;允许为空&#xff…...

【Linux】-- Shell的运行原理、Linux当中的权限

目录 Shell的运行原理 Linux权限的概念 su命令 权限 文件访问权限的相关设置方法 chmod指令 chown指令 chgrp指令 sudo命令 文件的常见问题 umask 粘滞位 关于权限的总结 Shell的运行原理 Shell运行原理 —— 外壳程序。 Linux严格意义上说的是一个操作系统&…...

MOS管选型参数:VGS(th)

MOS管选型参数&#xff1a;VGS(th) VGS&#xff08;th&#xff09;&#xff1a;开启电压&#xff08;阀值电压&#xff09;。当外加栅极控制电压 VGS 超过 VGS&#xff08;th&#xff09; 时&#xff0c;漏区和源区的表面反型层形成了连接的沟道。应用中&#xff0c;常将漏极短…...

二.线性表之顺序表

文章目录前言一.顺序表的概念及结构二.顺序表的接口实现1.顺序表的动态存储2.顺序表的初始化3.顺序表尾插#封装&#xff1a;扩容函数4.顺序表尾删5.顺序表头插6.顺序表头删7.顺序表查找8.顺序表在pos位置插入x9.顺序表删除pos位置的值10.顺序表销毁11.顺序表打印三.源1.Seqlist…...

ElasticSearch - SpringBoot整合ElasticSearch实现文档的增删改

文章目录1. ElasticSearch和kibana的安装和配置2. SpringBoot 项目环境搭建3. 创建索引4. 索引文档5. 更新文档6. 删除文档https://www.elastic.co/guide/en/elasticsearch/reference/current/search-your-data.htmlhttps://www.elastic.co/guide/cn/elasticsearch/guide/curre…...

JavaScript 库

文章目录JavaScript 库JavaScript 框架&#xff08;库&#xff09;jQueryPrototypeMooTools其他框架CDN -内容分发网络引用 jQuery使用框架JavaScript 库 JavaScript 库 - jQuery、Prototype、MooTools。 JavaScript 框架&#xff08;库&#xff09; JavaScript 高级程序设计…...

云解析DNS为什么要配置默认线路?

传统解析技术不会判断访客IP&#xff0c;而是会随机选择一个IP返回给访问者&#xff0c;这样就有可能造成移动用户访问电信服务器IP&#xff0c;北京用户访问深圳服务器IP这种跨域跨网访问的情况&#xff0c;产生非常大的延迟&#xff0c;带来很不好的访问体验。 而云解析DNS会…...

Linux命令之awk

awk是一个有强大的文本格式化能力的linux命令&#xff0c;早期是在Unix上实现的&#xff0c;linux后来也可以使用了&#xff0c;我们在Linux上使用的awk是gawk&#xff08;GNU awk的意思&#xff09; 语法 awk [option] 模式{动作} file option表示awk的可选参数&#xff0c;可…...

实战-缓存数据一致+binlog初始+cannel监听+数据迁移,数据一致性架构设计

前言 一. 解决缓存不命中&#xff08;高并发操作击穿打挂DB的风险&#xff09; 当并发量打的时候&#xff0c;当我们的缓存过期时&#xff0c;就算到数据库的比例偏小的时候&#xff0c;我们的请求时比较大的。那也会存在数据库崩掉的情况。解决方案想法如下&#xff08;总体…...

nginx配置中proxy_pass反向代理502的bug

记录一个坑人的bug&#xff0c; 我今天在一台新的liunx上运行nginx来进行反向代理时候&#xff0c;发现怎么测都是502 我把配置全部删了从头开始配置&#xff0c;发现80端口正常&#xff0c;80端口index.html正常&#xff0c;反向代理转向http://127.0.0.1/也正常&#xff0c;…...

JavaScript 两种方案打开文件对话框

JavaScript 两种方案打开文件对话框 文章目录JavaScript 两种方案打开文件对话框一、文件对话框二、传统方案表单元素&#x1f308;三、文件系统访问API&#x1f4a6;四、更进一步使用六、代码仓库&#x1f310;七、参考资料&#x1f498;七、推荐博文&#x1f357;一、文件对话…...

Pycharm远程服务器常见问题

2023年02月23日 问题描述&#xff1a;Pycharm远程服务器跑代码时&#xff0c;不小心把Pycharm关掉了&#xff0c;但服务器代码还在运行&#xff1f; 解决办法&#xff1a;kill进程 先用watch -n 0.5 nvidia_smi查看进程&#xff0c;然后kill -9 <进程> 1、nvidia-smi…...

内容团队如何快速出稿

对于内容团队而言&#xff0c;每个内容选题就相当于一个小项目&#xff0c;它们并非简单的线性工作流&#xff0c;相反其复杂程度不亚于一个小型工厂。一个内容选题会涉及内容形式&#xff0c;选题类型等多个变量&#xff0c;这些变量因素组合起来就是十几种不同类型的工作流。…...

es-08索引的批量操作

索引的批量操作 批量查询和批量增删改 批量查询 GET /_mget#批量查询 GET product/_search GET /_mget {"docs": [{"_index": "product","_id": 2},{"_index": "product","_id": 3}] }GET product/_mge…...

诈金花的概率

游戏使用一副除去大小王的扑克牌&#xff0c;共4个花色52张牌。 1、豹子&#xff08;AAA最大&#xff0c;222最小&#xff09;。2、同花顺&#xff08;AKQ最大&#xff0c;A23最小&#xff09;。3、同花&#xff08;AKQ最大&#xff0c;352最小&#xff09;。4、顺子&#xff…...

ESP32设备驱动-MLX90393磁场传感器驱动

MLX90393磁场传感器驱动 文章目录 MLX90393磁场传感器驱动1、MLX90393介绍2、硬件准备3、软件准备4、驱动实现1、MLX90393介绍 MLX90393 磁场传感器可以在运行时重新编程为不同的模式和不同的设置。 该传感器使用 Melexis 专有的 Triaxis 技术提供与沿 XYZ 轴感应的磁通密度成…...