JVM基础笔记

简介: JVM基础笔记

 熟GC常见算法,熟悉常见的垃圾收集器,具有实际JVM调优实战经验

image.gif

java程序开始执行,会有一个栈产生,一个线程一个栈。一个方法对应一个栈帧

堆空间是在程序运行的时候动态分配的一个空间

栈空间自动释放,堆空间涉及释放问题

野指针:

--同一个对象,两个指针,一个释放了,一个不知道还拿来用

--同一个指针,不同位置

--不再指向任何对象的指针

--NullPointerExcetion

并发问题:

--多线程访问同一块儿内存空间

语言的发展历史

c/c++

--手工管理内存

--忘记释放  内存泄漏        memory leak

--释放多次        产生极其难以调试的bug,一个线程空间莫名其妙被另外一个释放了

--开发效率很低

java  Python go js kotlin scala

--方便内存管理的语言

--GC         Garbage Collector        垃圾回收机制        应用线程只管分配,垃圾回收器负责回收

--大大降低了程序员门槛

rust

--运行效率超高(对标 c c++)

--不用手工管理内存(没有GC)

--学习曲线巨高(所有权 任何一个值任何时候都只归属一个变量 变量有且只有一个)

--你只要程序语法通过,就不会有bug

什么是垃圾:当没有引用指向时

垃圾回收算法:

mark-sweep:标记清除法                        碎片化

copying:负责法                                    浪费空间

mark-compact:标记整理法                   效率偏低

分代模型

新生代:刚刚诞生的对象,更新频繁,复制算法,老年代:标记清除,或标记整理或者混合使用

G1前都是分代,G1后都是分区

cms         并发的标记清除

image.gif

CMS:

初始标记:STW       找root标记

并发标记:会有错标        三色标记算法(golang)

重新标记:STW

并发清理:


相关文章
|
5月前
|
存储 算法 Java
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
技术笔记:JVM的垃圾回收机制总结(垃圾收集、回收算法、垃圾回收器)
57 1
|
6月前
|
存储 Java 程序员
【JVM系列笔记】类生命周期
类的生命周期包括加载、连接(验证、准备、解析)、初始化、使用和卸载五个阶段。加载时,类加载器根据全限定名获取字节码,然后在方法区中创建InstanceKlass对象,并在堆上生成对应的Class对象。连接阶段验证字节码的正确性,准备阶段为静态变量分配内存并赋初始值,解析阶段将符号引用转换为直接引用。初始化阶段执行clinit方法,如静态变量赋值和静态代码块。类的初始化在访问静态成员、使用Class.forName、创建类实例或其子类时触发。
88 1
|
6月前
|
存储 Arthas Java
【JVM系列笔记】字节码
本文介绍了Java虚拟机(JVM)的组成,包括类加载子系统、运行时数据区、执行引擎和本地接口。字节码文件由基础信息(如魔数和版本号)、常量池、字段、方法和属性组成。常量池用于存储字符串等共享信息,方法区则包含字节码指令。执行引擎包含解释器、即时编译器和垃圾回收器,负责字节码的解释和优化。文章还提到了字节码工具,如javap、jclasslib和Arthas,用于查看和分析字节码。
78 0
【JVM系列笔记】字节码
|
6月前
|
前端开发 Java 应用服务中间件
【JVM系列笔记】类加载
类加载器分为两类,一类是Java代码中实现的,一类是Java虚拟机底层源码实现的。常见的类加载器有启动类加载器,拓展类加载器,应用类加载器以及自定义类加载器。以及类加载机制,双亲委托策略,以及打破双亲委托策略的几种方式。
82 0
|
6月前
|
Java 编译器 开发者
旁边的同事突然晋升阿里P7,只因偷偷学习了这份JVM笔记?
大家都是有经验的Java开发人员,想想为何要学习JVM? [面试?调优?装逼? ] 不管出于何种原因,总之你得先学好。那怎么学好呢?
|
11月前
|
存储 架构师 算法
收下我的膝盖!阿里架构师编写的668页Java虚拟机笔记真强
从Java诞生至今已有二十余年,基于虚拟机的技术屏蔽了底层环境的差异,一次编译,随处运行的思想促进了整个IT上层技术应用产生了翻天覆地的变化。Java作为服务端应用语言的首选,确实大大降低了学习和应用的门槛。
|
Java 编译器 开发者
旁边的同事突然晋升阿里P7,只因偷偷学习了这份JVM笔记?
大家都是有经验的Java开发人员,想想为何要学习JVM? [面试?调优?装逼? ] 不管出于何种原因,总之你得先学好。那怎么学好呢? 每个人对于JVM的了解可能不一样,这就要考虑到怎么切入 既然大家都学习过Java,那不妨就从Java开始聊起,同时也是扫盲,毕竟不是每个小伙伴都是计算机专业
花20天刷完Alibaba JVM笔记去面阿里,却意外拿到京东Offer?
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一。
|
设计模式 监控 算法
爱了爱了!阿里爆款Java性能优化神仙笔记!调优不止JVM
Java性能优化,它存在的理由有很多。计算机面对海量数据或者任务时,无论如何你都会碰到性能压力,唯一的选择是你会把这个压力放在哪一层或者哪一个位置来应对,以及采取什么应对措施。程序凑合着上线是一回事,而在压力下能够优美地运行往往很不容易。
|
存储 缓存 算法
JVM笔记
JVM笔记
73 0
JVM笔记