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

JVM的知识

什么是JVM

1.JVM:

JVM其实就是运行在 操作系统之上的一个特殊的软件。

2.JVM的内部结构:

(1)因为栈会将执行的程序弹出栈。

(2)垃圾99%的都是在堆和方法区中产生的。

类加载器:加载class文件。

类是模板,是抽象的,只有一个。但是对象是具体的

类加载器的类型:

虚拟器自带加载器

启动类(根)加载器

扩展类加载器

用户类加载器 (找类加载器会一层一层的往上找)

双亲委派机制:为了安全

其原理是:类加载器的查找顺序是按照这样的方式执行的:用户类加载器-> 扩展类加载器-> 启动类加载器 (最终执行)。

如果在启动类加载器和扩展类加载器中都找不到类,就会反过来找,即 启动类加载器-> 扩展类加载器-> 用户类加载器。如果都找不到的话,就会抛出异常,通知子类进行加载。

沙箱安全机制:为了安全

组成:字节码校验器、类装载器(使用的是双亲委派机制)。

Native:

带有native的关键字,说明java的作用达不到了,需要调用底层C语言库,进入本地方法栈。然后本地方法栈调用本地方法接口,进而调用本地方法库。

程序计数器: 线程私有的,就是一个指针,用于指向方法区中字节码。

方法区:

静态变量(static)、常量、类信息以及运行时常量池都放在方法区中。实例化变量存在堆内存中,于方法区无关。

栈:

一种数据结构,先进后出。一旦线程结束,栈就结束了。

三种JVM:

HotSpot

BEA

J9VM JIE

堆:

类加载器读取类文件后,一般在堆中存放引用对象的实例对象,具体是包含类、方法、常量、变量。

堆中分区:

新生区:分为伊甸园区(所有new的对象实例化都是在该区)和幸存者区 (from 和to 它们是可以相互之间进行转化的)

  1. 如果伊甸园区满了就进行轻度垃圾回(GC)收伊甸园区,如果有存活下的对象就进入幸存者区。
  2. 当幸存者区和伊甸园区都满了,就会进行一次重度垃圾回收(full GC),存活下来的程序进入老年区。

如果新生区和老年区都满了,就会出现内存溢出的现象(OOM)的现象。

老年区:
永久区:

jDK1.6之前:永久代,常量放在方法区中

JDK1.7 :永久代,但是逐渐退化

JDK1.8 :去除永久代,使用元空间代替。(逻辑上存在,实际物理层不存元空间)

永久区一般存放JDK自身携带的Class对象interface接口数据、存储java运行时的一些环境和类信息。这个区不存在垃圾回收。

JDK1.8以前的:

轻度垃圾回收:GC

重度垃圾回收:full GC

JVM分配的总内存是电脑内存的1/4,初始化内存大概是1/64。

如果堆出现OOM的情况:试着给堆空间分配更大的的内存。如果还报错就查找代码的错误。

3.GC 介绍和引用计数:

GC的作用区域

4.GC 的算法:

1. 引用计数器

引用计算器:给每个对象加一个计算器,每调用一次就计数加1。没有使用的话就直接清除。缺点是:需要占用额外的空间去计数。

2. 复制算法

复制算法(年轻代主要用的是复制算法):将幸存区(from) 的内容复制到幸存区(to)那边,此时幸存区(from)和幸存区(to)的角色会互换。当对象经历了15GC还没被清除,就会进入养老区。

每次GC后,幸存区to是空的。

好处是:没有碎片。

缺点是:浪费空间,因为幸存区(to) 是

空的。

MaxTenuringThreshold参数讲解 (最大任期)

在GC回收的时候. 如下图详解 From 区和To区 会来回的复制和交换位置. 每交换一次,就会增加一次年龄. 默认交换了15次, 就会从新生代到老年代中去.

3. 标记清除法

好处是:不需要额外的空间,与复制算法相比

缺点是:两次扫描需要时间,会产生内存碎片

4. 标记压缩算法

算法:再次扫描,将内存的碎片进行清除。

好处是:不会产生碎片。

缺点:再次扫描需要时间成本。

5. 标记清除压缩算法

先标记删除,等到几次,再将碎片进行压缩。

总结

年轻代:使用复制算法比较好,因为存活率低。

老年代:标记清除和标记压缩的方法比较好,因为存活率低,尽可能将内存碎片最小化。

相关文章:

JVM的知识

什么是JVM 1.JVM: JVM其实就是运行在 操作系统之上的一个特殊的软件。 2.JVM的内部结构: (1)因为栈会将执行的程序弹出栈。 (2)垃圾99%的都是在堆和方法区中产生的。 类加载器:加载class文件。…...

大模型日报2024-03-24

利用LLMs评分及解释K-12科学答案 摘要: 本文研究了在K-12级科学教育中使用大型语言模型(LLMs)对短答案评分及解释。研究采用GPT-4结合少量样本学习和活跃学习,通过人机协作提供有意义的评估反馈。 MathVerse:多模态LLM解数学题效果…...

Android kotlin全局悬浮窗全屏功能和锁屏页面全屏悬浮窗功能一

1.前言 在进行app应用开发中,在实现某些功能中要求实现悬浮窗功能,分为应用内悬浮窗 ,全局悬浮窗和 锁屏页面悬浮窗功能 等,接下来就来实现这些悬浮窗全屏功能,首选看下第一部分功能实现 2.kotlin全局悬浮窗全屏功能和锁屏页面全屏悬浮窗功能一分析 悬浮窗是属于Androi…...

图像识别在安防领域的应用

图像识别技术在安防领域有着广泛的应用,它通过分析和理解图像中的视觉信息,为安防系统提供了强大的辅助功能。以下是一些主要的应用领域: 人脸识别:人脸识别技术是安防领域中最常见的应用之一。它可以帮助系统识别和验证个人身份…...

前端面试集中复习 - http篇

1. http请求方式 HTTP请求方式有哪些:GET POST PUT DELETE OPTIONS 1) GET POST 的区别? 场景上: GET 用于获取资源而不对服务器资源做更改提交的请求,多次执行结果一致。用于获取静态数据,幂等。 POST&#xff1…...

C++ - 类和对象(上)

目录 一、类的定义 二、访问限定符 public(公有) protected(保护) private(私有) 三、类声明和定义分离 四、外部变量和成员变量的区别与注意 五、类的实例化 六、类对象的模型 七、类的this指针…...

mysql基础4sql优化

SQL优化 插入数据优化 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry);-- 优化方案一:批量插入数据 Inser…...

实现Spring Web MVC中的文件上传功能,并处理大文件和多文件上传

实现Spring Web MVC中的文件上传功能,并处理大文件和多文件上传 在Spring Web MVC中实现文件上传功能并处理大文件和多文件上传是一项常见的任务。下面是一个示例,演示如何在Spring Boot应用程序中实现这一功能: 添加Spring Web依赖&#x…...

搭建vite项目

文章目录 Vite 是一个基于 Webpack 的开发服务器,用于开发 Vue 3 和 Vite 应用程序 一、创建一个vite项目二、集成Vue Router1.安装 vue-routernext插件2.在 src 目录下创建一个名为 router 的文件夹,并在其中创建一个名为 index.js 的文件。在这个文件中…...

Docker 安装mysql 主从复制

目录 1 MySql主从复制简介 1.1 主从复制的概念 1.2 主从复制的作用 2. 搭建主从复制 2.1 pull mysql 镜像 2.2 新建主服务器容器实例 3307 2.2.1 master创建 my.cnf 2.2.2 重启master 2.2.3 进入mysql 容器,创建同步用户 2.3 新建从服务器容器实例 3308…...

GPT每日面试题—如何实现二分查找

充分利用ChatGPT的优势,帮助我们快速准备前端面试。今日问题:如何实现二分查找? Q:如果在前端面试中,被问到如何实现二分查找,如果回答比较好,给出必要的代码示例 A:当被问到如何实…...

机器学习神经网络由哪些构成?

机器学习神经网络通常由以下几个主要组件构成: 1. **输入层(Input Layer)**:输入层接受来自数据源(例如图像、文本等)的原始输入数据。每个输入特征通常表示为输入层中的一个节点。 2. **隐藏层&#xff…...

代码随想录算法训练营day19 | 二叉树阶段性总结

各个部分题目的代码题解都在我往日的二叉树的博客中。 (day14到day22) 目录 二叉树理论基础二叉树的遍历方式深度优先遍历广度优先遍历 求二叉树的属性二叉树的修改与制造求二叉搜索树的属性二叉树公共最先问题二叉搜索树的修改与构造总结 二叉树理论基础 二叉树的理论基础参…...

数据库引论:3、中级SQL

一些更复杂的查询表达 3.1 连接表达式 拼接多张表的几种方式 3.1.1 自然连接 natural join,自动连接在所有共同属性上相同的元组 join… using( A 1 , A 2 , ⋯ A_1,A_2,\cdots A1​,A2​,⋯):使用括号里的属性进行自然连接,除了这些属性之外的共同…...

毕业设计:日志记录编写(3/17起更新中)

目录 3/171.配置阿里云python加速镜像:2. 安装python3.9版本3. 爬虫技术选择4. 数据抓取和整理5. 难点和挑战 3/241.数据库建表信息2.后续进度安排3. 数据处理和分析 3/17 当前周期目标:构建基本的python环境:运行爬虫程序 1.配置阿里云pytho…...

(一)基于IDEA的JAVA基础7

关系运算符 运算符 含义 范例 结果 等于 12 false &#xff01; 不等于 1&#xff01;2 true > 大于 1>2 false < 小于 …...

MySQL数据库概念及MySQL的安装

文章目录 MySQL数据库一、数据库基本概念1、数据2、数据表3、数据库4、数据库管理系统&#xff08;DBMS&#xff09;4.1 数据库的建立和维护功能4.2 数据库的定义功能4.3 数据库的操纵功能4.4 数据库的运行管理功能4.5 数据库的通信功能&#xff08;数据库与外界对接&#xff0…...

redis实际应用场景及并发问题的解决

业务场景 接下来要模拟的业务场景: 每当被普通攻击的时候&#xff0c;有千分之三的概率掉落金币&#xff0c;每回合最多爆出两个金币。 1.每个回合只有15秒。 2.每次普通攻击的时间间隔是0.5s 3.这个服务是一个集群&#xff08;这个要求暂时不实现&#xff09; 编写接口&…...

考研数学|汤家凤《1800》基础部分什么时候做完?

从我个人的经验来看&#xff0c;做完汤家凤1800的基础部分在第一轮复习中并不是必须的&#xff0c;但是可以作为一个有效的复习工具。 我认为汤家凤1800的基础部分确实涵盖了考研高数的基础知识点&#xff0c;并且题目难度适中&#xff0c;适合用来巩固基础。在第一轮复习中&a…...

JS的设计模式(23种)

JavaScript设计模式是指在JavaScript编程中普遍应用的一系列经过验证的最佳实践和可重用的解决方案模板&#xff0c;它们用来解决在软件设计中频繁出现的问题&#xff0c;如对象的创建、职责分配、对象间通信以及系统架构等。 设计模式并不特指某个具体的代码片段&#xff0c;…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

window 显示驱动开发-如何查询视频处理功能(三)

​D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针&#xff0c;该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...