
jvm
JVM 学习记录
GeeKiller
生命不息,代码不止!
展开
-
012|JVM之G1垃圾回收器原理
原创 2020-08-25 13:39:10 · 147 阅读 · 0 评论 -
011|JVM 老年代垃圾回收器CMS 的工作原理
CMS 垃圾回收的基本原理一般来说,老年代我们选择的垃圾回收器是 CMS,他采用的是 标记-清理 算法,其实就是,先通过追踪 GC Roots 的方法,看各个对象是否被 GC Roots 给引用了,如果是,那就是存活对象,否则就是垃圾对象。这种方法最大的问题是,会造成很多内存碎片。如果 Stop the World 然后垃圾回收会如何?CMS垃圾回收器采取的是垃圾回收线程和线程系统工作线程尽量同时执行的模式来处理。CMS 如何实现系统一边工作一边进行垃圾回收CMS ...原创 2020-08-24 11:20:43 · 898 阅读 · 1 评论 -
010|JVM的 Stop The World 问题
原创 2020-08-24 11:19:00 · 187 阅读 · 0 评论 -
009|分析一次JVM多久会发生GC
分析的案例背景:公司研发的一个数据计算系统,日处理数据量在上亿的规模。是一个分布式部署的系统,每台机器大概每分钟执行100次数据提取和计算 每次大概需要计算10秒 每次大概提取1万条左右的数据到内存里面机器的配置:4核8G,JVM 内存给4G,其中新生代和老年代分别是 1.5G的内存空间。如下图,上面的图那么新生代多久会被塞满?假设,每条数据平均10个字段,可以认为每条数据在1KB 左右的大小,那么每次计算任务的一万条数据就差不多 10M 左右。按照 8:1:1 的..原创 2020-08-24 10:58:58 · 2264 阅读 · 0 评论 -
008|JVM 中回收算法以及每个算法的优劣
针对新生代的算法:复制算法针对老生代的算法:CMS上面分别画了一下回收算法演变过程。原创 2020-08-24 10:54:57 · 132 阅读 · 0 评论 -
007|什么时候JVM 中一个对象会被回收
被哪些变量引用的对象是不能被回收的?JVM 中使用了一种可达性分析算法,来判断哪些对象是可以被回收的,哪些是可以被回收的。这个算法的意思,就是说对每个对象,都分析一下有谁在引用他,然后一层一层往上去判断,看是否有一个GC Roots。那么哪些可以作为 GC Roots:局部变量 -- 只要一个对象被局部变量引用,那么就不能被回收 静态变量Java 中对象的不同引用类型Java 中的不同引用类型分别是:强引用、软引用、弱引用和虚引用。1、强引用public clas.原创 2020-08-24 10:53:03 · 785 阅读 · 0 评论 -
006|感受一下线上系统部署的JVM 设置
原创 2020-08-24 10:51:26 · 108 阅读 · 0 评论 -
005|JVM的分代模型:年轻代、老年代、永久代
为什么要分成年轻代和老年代?因为这跟垃圾回收机制有关,年轻代的对象,他们的特点就是创建之后很快就会被回收,所以需要一种算法而对于老年代里的对象,他们的特点是需要长期存在,所以需要另外一种垃圾回收算法,所以需要分成两个区域来放不 同的对象。什么说永久代?上图中的 方法区,就是永久代,永久代存放一下类的信息。...原创 2020-08-24 10:50:14 · 214 阅读 · 0 评论 -
004|JVM 垃圾回收机制用来干嘛的,为什么要垃圾回收
前面分析来一个方法的执行的,那么方法执行完之后会怎么样呢?原创 2020-08-24 10:48:50 · 124 阅读 · 0 评论 -
003|Jvm 有哪些内存区域
整体流程的分析:首先,你的JVM 启动,就会先加载你的 Kafka 类到内存中,然后会有一个 main 线程,开始执行的你的Kafka中的 mian() 方法,mian() 方法会关联一个程序计数器,那么它执行到哪一行指令,就会记录在这里。然后,mian() 方法在执行的时候,会在main线程关联的 Java虚拟机栈里,压入一个 main() 方法的栈帧。接着,就会发现需要创建一个 ReplicaMabager 类的实例对象,此时会加载 ReplicaMabager 类到内存里...原创 2020-08-24 10:47:06 · 180 阅读 · 0 评论 -
02|类加载器到底是何方神圣
前面我们分析了,JVM 的整体的一个运行原理我们首先从“.java”代码文件,编译成 “.class” 字节码文件然后,类加载器把“.class”字节码文件中的类加载到JVM中,接着就是JVM 运行我们写好的那些类中代码。上面就是我们之前的分析类,下面我么着重分析其中的“类加载”过程,看看JVM 的类加载机制到底是怎么样的?1、JVM 什么情况下会加载一个类一个类从加载到使用,一般会经历下面的几个过程:加载 --> 验证 --> 准备 --> ...原创 2020-08-18 15:58:28 · 162 阅读 · 0 评论 -
01|我们的Java代码到底是如何运行起来的?
学习 JVM,那么得先明白我们平时写的代码,到底是怎么运行起来?首先,我们会写好一堆以 .java 结尾的代码文件,那么,我们也好的程序是如何部署到服务器呢?一般来说,我们会把代码打成“.jar”的jar 包,或者打成“.war”de war包。然后,把打成的 jar 包或者 war 包放到线上服务器去部署。这个部署就有很多种途径了,但是最基本的一种方式,就是通过Tomcat这类容器来部署代码,也可以是你自己手动通过 “java”命令来运行一个jar包中的...原创 2020-08-18 15:57:45 · 344 阅读 · 0 评论