"回顾传统垃圾回收器" HotSpot 垃圾收集器实现 Serial Collector(串型收集器) 使用场景,大多数服务器是单核CPU。 适用收集场景:1. 新生代收集(Young Generation Collection)2. 老年代收集(Old Generation Collection) ...
分类:
编程语言 时间:
2019-08-05 20:43:19
阅读次数:
171
ThreadLocal也是在面试过程中经常被问到的,本文主要从以下三个方面来谈对ThreadLocal的一些理解: ThreadLocal用在什么地方 ThreadLocal一些细节 ThreadLocal的最佳实践 ThreadLocal用在什么地方? 讨论ThreadLocal用在什么地方前,我 ...
分类:
其他好文 时间:
2019-08-01 09:27:33
阅读次数:
86
1. 并发与并行 1) 并发:多条垃圾收集器线程并行工作,用户线程处于等待状态 2) 并行:用户线程和垃圾收集线程同时执行(不一定并行,可能会交替执行) 2. Serial收集器(新生代,单线程,复制算法收集器,最基本,最悠久的收集器,JDK1.3.1版本之前) 1) 单线程收集器:不表示只使用一个 ...
分类:
其他好文 时间:
2019-07-29 19:01:10
阅读次数:
121
对象的内存分配,主要就是堆上分配(也可能结果JIT编译后被拆散为标量类型并间接在栈上分配)。对象主要分配在新生代Eden区,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况分配在老年代上。具体分配取决于垃圾收集器组合使用情况以及虚拟机参数设置 1. GC 1) 新生代GC(Mino ...
分类:
其他好文 时间:
2019-07-29 18:59:00
阅读次数:
120
垃圾收集器 判断对象是否需存活 回收堆 判断对象是否存活: 方法一:引用计数法。对象被引用一次就+1,当为0时回收对象。缺点:无法解决循环引用问题。 方法二:可达性分析算法。记录当前对象是否有和GC Roots中对象的引用链。(其中,可以作为GCRoots对象的有:虚拟机栈中引用的对象、方法去中类静 ...
分类:
其他好文 时间:
2019-07-27 15:43:26
阅读次数:
119
一、垃圾回收的必要性 下面这段话引自《JavaScript权威指南(第四版)》 由于字符串、对象和数组没有固定大小,所有当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分配内存来存储那个实体。只要像这样动态地分配了内存,最终都要释放 ...
分类:
编程语言 时间:
2019-07-24 09:21:33
阅读次数:
99
前言:相比C++,java做的一大改进是将复杂的内存管理抽离出来交给jvm去处理,让码农不再时刻盯着内存泄漏的问题,可以更专注于业务逻辑的开发。 java的GC机制是和其内存模型相关联的,而GC的核心内存区域是内存中的堆区。 java堆区按对象的存活时间被分为了年轻代(eden区+s0区+s1区)和 ...
分类:
编程语言 时间:
2019-07-23 13:09:36
阅读次数:
103
1.垃圾回收算法 1.1 标记-清除算法 算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它是最基础的收集算法,效率也很高,但是会带来两个明显的问题: 1.效率问题 2.空间问题,标记清除后会产生大量不连续的碎片 1.2 复制算法 为了解决效率问题 ...
分类:
编程语言 时间:
2019-06-30 14:26:56
阅读次数:
140
一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-06-28 21:04:23
阅读次数:
179