
Jvm虚拟机学习笔记
Jvm虚拟机学习笔记
H.CF
这个作者很懒,什么都没留下…
展开
-
6. 新生代的作用和survivor区的作用
新生代的作用和survivor区的作用区域简图新生代的作用和survivor区的作用为什么会有新生代为什么会有 survivor 区不使用 survivor 区的解决办法新生代使用的回收算法复制算法的思想复制算法的工作流程设置两个Survivor区的作用区域简图在了解新生代的作用和新生代中 survivor 区的作用之前,我们先了解为什么会有新生代以及为什么会有 survivor 区新生代的作用和survivor区的作用为什么会有新生代新生代主要是存放新创建的对象,新对象的生命周期一般也就会随着原创 2020-07-16 16:40:42 · 664 阅读 · 0 评论 -
5. 虚拟机类加载机制
虚拟机类加载机制双亲委派模型类加载器类加载器的关系双亲委派模型的操作过程类加载机制双亲委派模型类加载器启动类加载器(Bootstrap ClassLoader):虚拟机将能识别的类库加载到虚拟机内存中拓展类加载器(Extension ClassLoader):负责加载指定的路径中的所有类库应用程序类加载器(Application ClassLoader):负责加载用户类路径上所指定的类库类加载器的关系双亲委派模型的操作过程一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是原创 2020-07-16 15:16:12 · 114 阅读 · 0 评论 -
3. 垃圾收集器(CMS和G1垃圾收集器)
垃圾收集器(CMS和G1垃圾收集器)根据作用代不同分类七种垃圾收集器新生代收集器老年代收集器整堆收集器JVM(HotSpot)7种垃圾收集器1、Serial收集器(串行收集器)2、ParNew收集器3、Parallel Scavenge收集器4、Serial Old收集器5、Paraller Old收集器6、CMS(Conturrent Mark Sweep)收集器CMS收集器运行过程初始登记并发标记重新标记并发清除优点缺点7、G1(Garbage-First)收集器特点垃圾收集过程初始标记并发标记最终标记原创 2020-07-14 18:39:57 · 252 阅读 · 0 评论 -
4. 内存分配和回收策略
内存分配和回收策略JVM分代垃圾回收策略的基础概念为什么要分代(新生代,老年代,永久代)1. 新生代2. 老年代3. 永久代内存分配和回收策略1. 对象优先在Eden分配2. 大对象直接进入老年代3. 长期存活的对象进入老年代4. 动态对象年龄判定5. 空间分配担保JVM分代垃圾回收策略的基础概念为什么要分代(新生代,老年代,永久代)1. 新生代所有新生成的对象首先都是放在新生代的。新生代的目标就是尽可能快速的收集掉那些生命周期短的对象新生代有划分为Eden、From Survivor和T原创 2020-07-14 16:41:24 · 194 阅读 · 0 评论 -
2. 对象存活判断和垃圾回收机制
对象存活判断和垃圾回收机制判断对象是否存活引用计数算法算法思路缺点可达性分析算法算法思路可以作为GC Roots 的对象垃圾回收机制算法标记-清除算法缺点复制算法优点缺点标记-整理算法分代收集算法判断对象是否存活引用计数算法算法思路给对象中添加一个计数器, 如果有一个地方引用, 计数器 +1, 引用失效 -1当计数器为0 时说明对象没有地方子引用, 既可以判定这个对象已经消亡缺点不能解决对象间相互循环引用的问题 对象A = 对象B 对象B = 对象A可达性分析算法通过一系列的 GC R原创 2020-07-14 14:48:47 · 348 阅读 · 0 评论 -
1. Java虚拟机运行时数据区域
Java虚拟机运行时数据区域线程隔离的数据区域程序计数器Java虚拟机栈(虚拟机栈:生命周期和线程相同)本地方法栈线程共享的数据区域Java堆方法区运行时常量池(方法区的一部分)虚拟机中对象的创建过程对象的访问定位线程隔离的数据区域程序计数器程序计数器:是一块较小的内存空间,记录的是当前线程所执行的字节码的行号指示器为什么是线程隔离:首先我们知道,程序计数器是线程隔离的,也就是线程私有的,不受其他线程影响。这是因为,多线程工作是通过频繁的切换并且通过分配处理器执行时间方式来实现的,所以在来回切换的.原创 2020-07-14 12:05:40 · 146 阅读 · 0 评论 -
0. 如何解决OutOfMemoryError异常
OOM 的产生原因:对象数量到达最大堆的容量限制后就会产生内存溢出异常解决内存溢出异常:首先先通过内存映像分析工具对Dump出来的堆转储快照进行分析确认内存中的对象是否是必要的,如果是必要就是内存溢出(堆内存不够创建对象),不是必要的那就是内存泄漏(对象无法回收)如果是内存泄漏需要通过工具查看泄漏对象到GC Roots 的引用链, 就能找到对应的关联关系进而分析GC不能自动回收的原因如果是内存溢出,可以调节虚拟机的堆参数和服务器的物理内存,从代码层面检查哪些对象声明周期过长虚拟机栈和本地方原创 2020-07-14 11:18:07 · 465 阅读 · 0 评论