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

JVM学习

1.Java虚拟机内部有哪些线程共享,那些线程隔离

程序计数器:

        通过改变这个计数器的值来选取下一条需要执行的字节码命令

Java虚拟机栈:

        栈,每个方法被执行时,Java虚拟机都会同步的创建一个栈帧用于存储局部变量表,操作数栈,动态连接,方法出口等信息。

本地方法栈:

        本地方法服务

堆:

        所有线程共享

方法区:

        存储已加载的类型信息:常量,静态变量,即时编译器编译后的缓存数据

        常量池:是方法区的一部分
                作用:减少重复创建和销毁,类似于缓存,提升速度

为什么有时候运行Java很卡?

大量IO操作占用本地内存

2.什么是内存溢出,栈溢出,内存泄漏?

内存溢出:创建对象内存不够

栈溢出:方法太多

内存泄漏:数据没用还占据内存倒是空间无法使用

3.如何进行JVM调优

通过Java visual VM jvisualvm.exe(位于bin目录下)

4.jvm中如何判定是否为垃圾

可达性分析算法

5.几种引用方式?

强引用:

        传统引用的定义,只要强引用关系还在,垃圾收集器就不会回收被引用的对象

软引用:

        用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,在系统将要发生内

存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存, 才会抛出内存溢出异常。

弱引用

        用来描述那些非必须对象,但是它的强度比软引用更弱一些,被弱引用关联的对象只

能生存到下一次垃圾收集发生为止。当垃圾收集器开始工作,无论当前内存是否足够,都会回收掉只 被弱引用关联的对象。

虚引用

        一个对象是否有虚引用的 存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚 引用关联的唯一目的只是为了能在这个对象被收集器回收时收到一个系统通知。

6.垃圾收集算法目的?有哪些:

        性能损耗最低。

        标记清除算法:

                标记出所有需要回收的对象,标记完成后统一回收掉所有标记的对象,也可以反过来。

                缺点:1.执行效率不稳定,如果存在大量的需要回收的对象,那么执行效率就会降低。

                            2.内存空间碎片化。

        标记-复制算法:

                为了解决标记清除算法面对大量对象回收效率低的问题

                缺点:可用内存缩小了一半。

        标记-整理算法:

                标记过程仍然与标记-清除算法一样,但是后续由清理改为将所有存活的对象都向空间的一端移动。

这里的回收是指堆区对对象的回收

7.有哪些垃圾收集器

CMS收集器

        特点:并发收集,低停顿。依赖多核:降低CPU浪费的情况下是快的。无法处理“浮动垃圾”(在标记清除阶段因为线程还在运行,所以就会产生垃圾,但是发生在标记清除阶段之后,所以只能等到下一次处理)

Garbage First(G1)收集器

二者的区别:

CMS:垃圾收集的目标要么是老年代,要么是整个新生代

G1:面向堆内存的任何部分组成回收集,衡量标准改为内存中哪个部分存放的垃圾数量多,回收效益大。G1在小内存表现下不是很好,不如CMS。

8.介绍垃圾回收策略

大对象直接进入老年代

长期存活的对象直接进入老年代(大于15岁)

在Survivor空间中相同年龄的总和大于一半,大于或者等于改年龄的对象直接进入老年代。

9.什么情况下会触发垃圾回收?

内存满了的情况下

10.jvm调优有哪些参数

 jps:虚拟机进程状况工具

jps [ options ] [ hostid ]

jstat:虚拟机统计信息监视工具
jstat [ option vmid [interval[s|ms] [count]] ]
jinfo:Java配置信息工具
jinfo [ option ] pid
jmap:Java内存映像工具
jmap [ option ] vmid
jhat:虚拟机堆转储快照分析工具
jhat eclipse.bin //分析dump文件
jstack:Java堆栈跟踪工具
jstack [ option ] vmid

11.内存分配与回收策略

12.类加载有哪几个过程?都有什么用

13.那种情况会触发类的初始化?

 1)遇到newgetstaticputstaticinvokestatic这四条字节码指令时,如果类型没有进行过初始 化,则需要先触发其初始化阶段。

能够生成这四条指令的典型Java代码场景有:

·使用new关键字实例化对象的时候。
·读取或设置一个类型的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)
的时候。
·调用一个类型的静态方法的时候。

2)使用java.lang.reflect包的方法对类型进行反射调用的时候,如果类型没有进行过初始化,则需要先触发其初始化

3)当初始化类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。
4)当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先
初始化这个主类。
5)当使用JDK 7 新加入的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果为REF_getStatic、REF_putStatic REF_invokeStatic 、REF_newInvokeSpecial四种类型的方法句柄,并且这个方法句柄对应的类没有进行过初始化,则需要先触发其初始化。
6)当一个接口中定义了JDK 8 新加入的默认方法(被default关键字修饰的接口方法)时,如果有
这个接口的实现类发生了初始化,那该接口要在其之前被初始化。

14.类加载器

        作用:寻找类,并且加载类

        如果自己写一个类加载器

/**
* 类加载器与instanceof关键字演示
*
* @author zzm
*/
public class ClassLoaderTest {public static void main(String[] args) throws Exception {ClassLoader myLoader = new ClassLoader() {@Overridepublic Class<?> loadClass(String name) throws ClassNotFoundException {try {String fileName = name.substring(name.lastIndexOf(".") + 1)+".class";InputStream is = getClass().getResourceAsStream(fileName);if (is == null) {return super.loadClass(name);}byte[] b = new byte[is.available()];is.read(b);return defineClass(name, b, 0, b.length);} catch (IOException e) {throw new ClassNotFoundException(name);}}};Object obj =     myLoader.loadClass("org.fenixsoft.classloading.ClassLoaderTest").newInstance();System.out.println(obj.getClass());System.out.println(obj instanceof org.fenixsoft.classloading.ClassLoaderTest);}
}

15.通过什么方式寻找这个类

        双亲委派模型

        在哪里破坏双亲委派?tomcat

16.什么是热部署?

再不清空内存的情况下,不重启的情况下,更新内存中的类信息

相关文章:

JVM学习

1.Java虚拟机内部有哪些线程共享&#xff0c;那些线程隔离 程序计数器&#xff1a; 通过改变这个计数器的值来选取下一条需要执行的字节码命令 Java虚拟机栈&#xff1a; 栈&#xff0c;每个方法被执行时&#xff0c;Java虚拟机都会同步的创建一个栈帧用于存储局部变量表&…...

Visual Studio 20XX中utf-8中文在控制台显示乱码

文章目录 在 Visual Studio 20xx中&#xff0c;如果源码文件是 UTF8编码&#xff0c;要打印中文到控制台时&#xff0c;控制台会显示乱码&#xff0c;可以进行以下设置。 包含<Windows.h>头文件。在main函数初始调用SetConsoleOutputCP(CP_UTF8)设置控制台输出字符集为UT…...

拥抱个人成长与社会进步:自我认知与开放心态的相互影响

拥抱个人成长与社会进步&#xff1a;自我认知与开放心态的相互影响 Embracing Personal Growth and Societal Progress: The Interplay of Self-Awareness and Open-mindedness 一、引言 I. Introduction 在当今急速发展的时代&#xff0c;个人成长与社会进步交织在一起&…...

【PostgreSQL内核学习(二十五) —— (DBMS存储空间管理)】

DBMS存储空间管理 概述块&#xff08;或页面&#xff09;PageHeaderData 结构体HeapTupleHeaderData 结构 表空间表空间的作用&#xff1a;表空间和数据库关系表空间执行案例 补充 —— 模式&#xff08;Schema&#xff09; 声明&#xff1a;本文的部分内容参考了他人的文章。在…...

2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍 第5天

第 五 天 整个网站例 5.1 准备工作 项目目录与版心 base.css 5.2 网页制作思路 5.3 header 区域-整体布局 5.4 header区域-logo 5.5 header区域-导航 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&l…...

SpringBoot使用Kafka详解含完整代码

1. 前言 随着大数据和实时处理需求的增长&#xff0c;Kafka作为一种分布式流处理平台&#xff0c;与Spring Boot的集成变得尤为重要。本文将详细探讨如何在Spring Boot应用程序中设置和使用Kafka&#xff0c;从基础概念到高级特性&#xff0c;通过实际代码示例帮助读者深入理解…...

解决:java -jar 在cmd中运行 程序卡顿,卡死的 问题。BIO和NIO案例保存

解决 怎么解决&#xff0c;就是 日志别输出到 cmd 就行了。就行了。就行了。 java -jar demo.jar > output.log 2>&1 &最近写东西&#xff0c;遇到了 程序偶尔卡死的情况。是java -jar 启动的。具体卡死为&#xff1a;http请求超级卡顿 或 偶尔反应好多个请求&…...

LeetCode第824题 - 山羊拉丁文

题目 解答 String toGoatLatin(String S) {if (S null) {return "";}S S.trim();if (S.isEmpty()) {return "";}StringBuilder sb new StringBuilder();String[] tokens S.split(" ");for (int i 0, j 1, length tokens.length; i <…...

[Python] 什么是逻辑回归模型?使用scikit-learn中的LogisticRegression来解决乳腺癌数据集上的二分类问题

什么是线性回归和逻辑回归&#xff1f; 线性回归是一种用于解决回归问题的统计模型。它通过建立自变量&#xff08;或特征&#xff09;与因变量之间的线性关系来预测连续数值的输出。线性回归的目标是找到一条直线&#xff08;或超平面&#xff09;&#xff0c;使得预测值与观…...

那些不输于乙游男主人设的国漫男主

最近乙游的势头越来越猛&#xff0c;新宠旧爱一起上阵&#xff0c;叫人应接不暇。在二次元的世界里&#xff0c;乙游男主们凭借着超凡的魅力&#xff0c;成为了无数少女心中的理想对象。他们或冷酷、或温柔、或阳光、或神秘&#xff0c;每一个角色都有着独特的性格和故事。 乙游…...

Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询

1概况 本文展示如何使用 Flink CDC Iceberg Doris 构建实时湖仓一体的联邦查询分析&#xff0c;Doris 1.1版本提供了Iceberg的支持&#xff0c;本文主要展示Doris和Iceberg怎么使用&#xff0c;大家按照步骤可以一步步完成。完整体验整个搭建操作的过程。 2系统架构 我们整…...

关于华为应用市场上架,申请权限未告知目的被驳回问题的简单处理方式

关于华为应用市场上架过程中出现的【您的应用在运行时&#xff0c;未同步告知权限申请的使用目的&#xff0c;向用户索取&#xff08;存储、拍照&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。】 使用方式&#xff1a; 1、引入 import permision from "/m…...

【ElasticSearch】概述

文章目录 ElasticSearch1.基本介绍2.设计理念3.基本架构与核心概念学习参考资料&#xff1a; ElasticSearch 简单整理ES基本概念&#xff0c;设计理念&#xff0c;构建与使用&#xff0c;供回顾。 1.基本介绍 Elasticsearch 是一个基于 Apache Lucene 的开源的分布式搜索引擎…...

十进制转十六进制 C/C++蓝桥杯基础试题BASIC-10

问题描述 十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号&#xff0c;分别表示十进制数的0至15。十六进制的计数方法是满16进1&#xff0c;所以十进制数16在十六进制中是10&#xff0c;而十进制的17在十六进制中是…...

【LVGL环境搭建】

LVGL环境搭建 win模拟器环境搭建一.二.三.四.五. Ubuntu模拟器环境搭建一. 前置准备二. 下载LVGL Source code&#xff1a;三. 安装sdl2&#xff1a;四. 开启VScode执行五. 安装扩展套件六. 按F5执行七. 执行结果 win模拟器环境搭建 一. 二. 三. 四. 五. Ubuntu模拟器环境…...

【c语言】简单贪吃蛇的实现

目录 一、游戏说明 ​编辑 二、地图坐标​ ​编辑 三、头文件 四、蛇身和食物​ 五、数据结构设计​ 蛇节点结构如下&#xff1a; 封装一个Snake的结构来维护整条贪吃蛇&#xff1a;​ 蛇的方向&#xff0c;可以一一列举&#xff0c;使用枚举&#xff1a; 游戏状态&a…...

2023年09月CCF-GESP编程能力等级认证Python编程六级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( ) A:输入 B:输出 C:控制 D:记录 答案:A 第2题 以下关于…...

Flink中StateBackend(工作状态)与Checkpoint(状态快照)的关系

State Backends 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state 的工作副本都保存在负责该键的 taskmanager 本地中。另外&#xff0c;Operator state 也保存在机器节点本地。Flink 定期获取所有状态的快照&#xff0c;并将这些快照复制到持…...

【C语言刷题系列】喝汽水问题

文章目录 一、文章简介 1.先买再换 1.1 代码逻辑&#xff1a; 1.2 完整代码 1.3 运行结果 1.4 根据方法一总结优化 2.边买边换 2.1 代码逻辑&#xff1a; 2.2 完整代码 2.3 运行结果 一、文章简介 本文所述专栏——C语言经典编程问题 C语言刷题_倔强的石头106的博客…...

[C++] C++ 11的functional模块介绍和使用案例

functional模块介绍 functional模块是C 11提供了一组函数对象和算法&#xff0c;用于增强C的函数式编程能力。该模块中的函数对象和算法可以大大简化代码&#xff0c;并提供了一些有用的工具&#xff0c;例如函数适配器和函数对象的组合。 functional模块中的函数对象包括&am…...

HoRain云--Swift枚举全解析:从基础到高级应用

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

ScriptCat脚本猫完整指南:为什么它是浏览器脚本管理的终极选择

ScriptCat脚本猫完整指南&#xff1a;为什么它是浏览器脚本管理的终极选择 【免费下载链接】scriptcat ScriptCat, a browser extension that can execute userscript; 脚本猫&#xff0c;一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scr…...

⾃动化测试 概念

⾃动化⾃动化概念⾃动的代替⼈的⾏为完成操作。 ⾃动化在⽣活中处处可⻅⾃动化的主要⽬的就是⽤来进⾏回归测试。回归测试软件有多个版本需要进⾏功能的整体回归。为了避免新增功能影响到历史的功能需要进⾏功能的回归。常⻅⾯试题 1.⾃动化测试能够取代⼈⼯测试吗&#xff1f;…...

Multisim 14.0实战:用74LS160和74LS161搭建61进制计数器(附完整电路图)

Multisim 14.0实战&#xff1a;用74LS160和74LS161搭建61进制计数器 在电子工程领域&#xff0c;计数器电路设计是数字逻辑课程的核心实践内容之一。对于初学者而言&#xff0c;理解计数器的工作原理并通过仿真软件实现特定进制计数功能&#xff0c;不仅能巩固理论知识&#x…...

Unity ObjectPool性能优化实战:从基础使用到高频对象管理

1. 为什么需要对象池&#xff1f;游戏性能的隐形杀手 在开发射击类游戏或AR应用时&#xff0c;最影响性能的往往不是华丽的特效&#xff0c;而是那些看似简单的对象创建与销毁操作。想象一下这样的场景&#xff1a;玩家每秒发射20发子弹&#xff0c;每发子弹存活2秒&#xff0c…...

使用GitHub管理Pixel Dream Workshop的提示词工程与风格模板

使用GitHub管理Pixel Dream Workshop的提示词工程与风格模板 1. 为什么需要版本管理AI绘画项目 如果你经常使用AI绘画工具&#xff0c;可能会遇到这样的困扰&#xff1a;上周调出一个特别棒的赛博朋克风格参数组合&#xff0c;这周想再用却找不到了&#xff1b;团队里有人发现…...

别再死记硬背Payload了:用BUUCTF Basic靶场案例拆解漏洞利用的本质逻辑

别再死记硬背Payload了&#xff1a;用BUUCTF Basic靶场案例拆解漏洞利用的本质逻辑 在网络安全领域&#xff0c;很多学习者都会陷入一个误区&#xff1a;过度依赖现成的Payload和工具脚本&#xff0c;而忽视了漏洞利用背后的核心逻辑。这种学习方式虽然能快速解决特定题目&…...

算法调度问题中的代价模型与优化方法的技术5

算法调度问题概述定义与基本概念&#xff1a;任务调度、资源分配、目标函数典型应用场景&#xff1a;云计算、分布式系统、实时系统核心挑战&#xff1a;多目标权衡、动态环境、不确定性代价模型的设计与分析代价模型的组成&#xff1a;时间代价、资源代价、经济代价常见模型分…...

LiuJuan Z-Image Generator在内容创作中的落地:自媒体头像/封面图定制化生产方案

LiuJuan Z-Image Generator在内容创作中的落地&#xff1a;自媒体头像/封面图定制化生产方案 你是不是也遇到过这样的烦恼&#xff1f;想给自己的自媒体账号换个有辨识度的头像&#xff0c;或者为下一期视频设计一个吸引眼球的封面图&#xff0c;结果要么是找不到合适的素材&a…...

Windows下OpenClaw安装避坑:对接Qwen3-32B-Chat镜像详解

Windows下OpenClaw安装避坑&#xff1a;对接Qwen3-32B-Chat镜像详解 1. 为什么选择WindowsQwen3-32B-Chat组合 去年我在尝试自动化办公流程时&#xff0c;发现很多AI助手工具要么需要上传数据到云端&#xff0c;要么对硬件要求极高。直到遇到OpenClaw这个本地化AI智能体框架&…...