深入理解JVM

0 人感兴趣 · 23 次引用

  • 推荐
  • 最新
https://static001.geekbang.org/infoq/c1/c1c458b3f5012d76298824ad6f102675.png?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 类加载机制

用户头像
NORTH 2020 年 6 月 2 日

Java代码在编译过后,想要被运行和使用,经过的第一个步骤就是将编译后的字节码文件加载的虚拟机,那虚拟机是如何把字节码文件加载到虚拟机的呢?

https://static001.geekbang.org/infoq/05/05f9b71f189ca8c68d3cf5d3bd55f9d5.png?x-oss-process=image/resize,w_416,h_234

一文入门 JVM 虚拟机

用户头像
Simon郎 2020 年 6 月 2 日

jdk的全称是Java Development kit(java开发工具包),我们可以把程序设计语言、java虚拟机、java类库这三部分统称为jdk,jdk是用于支持java程序开发的最小环境。。

https://static001.geekbang.org/infoq/78/78dea42ce14141af829d84a97ff86311.jpeg?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 垃圾回收机制 - 对象的内存布局

用户头像
NORTH 2020 年 6 月 10 日

在Java语言层面,可以通过Class类来描述普通的Java类,当JVM创建对象的同时,会生成对应的Class对象,用来描述此对象的大致模型,这也是反射的基础。那么在JVM的内部是如何描述一个普通的对象?

https://static001.geekbang.org/infoq/52/5201a9607afb2e462f58b91a360d87bd.jpeg?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 垃圾回收算法 - 复制算法

用户头像
NORTH 2020 年 10 月 18 日

聊聊复制算法的原理以及实现。

https://static001.geekbang.org/infoq/a5/a534e1035ca4db38d5570d3e071d51bb.png?x-oss-process=image/resize,w_416,h_234

深入理解 Java 虚拟机

用户头像
NORTH 2020 年 6 月 4 日

深入理解Java虚拟机系列文章汇总

https://static001.geekbang.org/infoq/79/794bec47ac960104fff0d11b2b920d17.jpeg?x-oss-process=image/resize,w_416,h_234

从业务代码到 Openjdk 源码的 debug 之路

用户头像
飞影 2020 年 6 月 29 日

对业务源码的debug和openjdk的debug进行串联,能为研发人员提供对业务和jvm之间更加细粒度的观察。本文尝试将IDEA的远程debug和clion的debug相互连接,实现对一个简单springboot项目,从业务源码到jdk源码的debug,并观察其类加载、对象TLAB内存分配过程。

https://static001.geekbang.org/infoq/4f/4ffa7cc4d61219a540290239702486f7.png?x-oss-process=image/resize,w_416,h_234

深入理解 ClassLoader

用户头像
NORTH 2020 年 6 月 2 日

深入理解JVM的类加载器以及类的双亲委托机制。

https://static001.geekbang.org/infoq/26/26520611dd61a7f73fccac57a6b74437.png?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 内存管理 - 堆和栈

用户头像
NORTH 2020 年 6 月 3 日

继续聊聊JVM运行时的其他几块内存区域

https://static001.geekbang.org/infoq/1c/1c1bf80ebfc6265a38c20cd0fb1ac6a9.png?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 垃圾回收机制 - 何为垃圾?

用户头像
NORTH 2020 年 6 月 4 日

从诞生之初,人们就在思考GC需要完成的3件事情:何为垃圾?何时回收?如何回收?垃圾收集器在对内存进行回收前,第一件事就是要确定这些对象之中哪些还”活着“,哪些已经”死去“,而这些”死去“的对象,也就是我们所说的垃圾。

https://static001.geekbang.org/infoq/24/24fad1344f9de8b501497dbdafb48ff8.jpeg?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 垃圾回收机制 - 引用类型

用户头像
NORTH 2020 年 6 月 24 日

Java将引用分为:强引用、软引用、弱引用和虚引用四种。通过这四种引用类型来满足个性化的应用场景,那如何理解这四种引用类型,它们之间有何区别?具体的应用场景又有哪些?

https://static001.geekbang.org/infoq/26/26520611dd61a7f73fccac57a6b74437.png?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 内存管理 - 方法区

用户头像
NORTH 2020 年 6 月 2 日

JVM在执行Java程序时会把其所管理的内存划分成多个不同的数据区域,每个区域的创建时间、销毁时间以及用途都各不相同,本文介绍方法区以及如何阅读字节码。

https://static001.geekbang.org/infoq/fd/fd974189625221782237ba00ce0e4873.jpeg?x-oss-process=image/resize,w_416,h_234

深入理解 JVM 垃圾回收机制 - 运行时栈帧的内存变化

用户头像
NORTH 2020 年 6 月 17 日

引用在JVM垃圾回收中是一个特别重要的概念,毕竟垃圾回收是从枚举GC Roots开始的,栈帧中的局部变量是GC Roots中非常重要的组成部分,所以正确的理解运行时栈帧的内存结构变化,也算是理解垃圾回收的开端吧。

JVM 垃圾回收器 G1

用户头像
Alex🐒 2020 年 7 月 22 日

G1 收集器是一款面向服务端应用的垃圾收集器,主要针对多 CPU 以及大容量内存的场景,在缩短 STW 的同时,具备高吞吐的特征(大概率)。在启动 JVM 参数加上 -XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200 启用 G1 作为垃圾回收器。

https://static001.geekbang.org/infoq/bb/bbf3795cd72231a7bdc3dbe7a63e22d3.png?x-oss-process=image/resize,w_416,h_234

深入理解 ContextClassLoader

用户头像
NORTH 2020 年 6 月 2 日

如何破坏类的加载器大多都遵循双亲委托机制 ?

JVM 对象内存布局

用户头像
Alex🐒 2020 年 7 月 22 日

Openjdk 提供 jol 工具可查看对象内存布局,以下内容适用 HotSpot

https://static001.geekbang.org/infoq/28/2804d6eb3e2739c27e8ac2ac6ae3f6fa.jpeg?x-oss-process=image/resize,w_416,h_234

豆瓣 9.0,35 万读者“搜不到信息”的神秘作者,我们帮你找到了

用户头像
华章IT 2020 年 6 月 17 日

导读:这次采访起源来自于我和豆瓣的一位读者有同样的好奇心,为什么网上搜不到周志明老师的更多信息?为什么“80后玩家”可以把本本书都维持在9.0分左右?他的“社恐”到底有多严重?

JVM 垃圾回收器 CMS

用户头像
Alex🐒 2020 年 7 月 22 日

CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的老年代垃圾回收器,基于“标记-清除”算法的“多线程”垃圾回收。对于要求服务器响应速度的交互式应用,这种垃圾回收器非常适合。在启动 JVM 参数加上 -XX:+UseConcMarkSweepGC 启

JVM 垃圾回收机制

用户头像
Alex🐒 2020 年 7 月 22 日

垃圾回收(Garbage Collection,GC)针对堆(以及方法区)中的垃圾数据进行清理,防止内存泄漏,有效的使用可以使用的内存。

JVM 运行时数据区

用户头像
Alex🐒 2020 年 7 月 22 日

JVM 的内存在不同的运行时数据区进行操作。包括方法区(method area)、堆(heap)、栈(stacks)、程序计数器(program counter registers)、本地方法栈(native method stacks)。其中堆、方法区是线程共享的,栈、本地方法栈、计数器是线程隔离的。

JVM 类加载机制

用户头像
Alex🐒 2020 年 7 月 22 日

JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。

深入理解JVM_深入理解JVM资料文章-InfoQ写作平台