- 博客(7)
- 收藏
- 关注
原创 JVM进阶之GC(三)垃圾回收算法
上篇我们讨论了怎么判断对象是否存活,判了“死刑”的对象就会在垃圾回收中被回收掉。那么本文将说说JVM是如何回收垃圾的。垃圾回收算法标记-清除算法算法的过程就如同算法的名字,分为标记和清除两个阶段:首先标记出所有要回收的对象,然后对标记的对象统一清除。算法很简单,再看下逻辑图: 内存空间经过标记清除算法回收的过程一目了然,从图中也能看出这种算法的不足,即标记清除后会产生大量
2018-01-24 23:16:28 433
原创 JVM进阶之GC(二)对象存活判断算法
上一篇简单的说明了对象在JVM中的内存分代策略,此文继续来为GC打基础,说说什么样的对象需要被GC,即对象是否存活判定算法。判定对象存活算法如何判断对象沦为了垃圾也是门技术。引用计数法引用计数法就是给对象加个引用计数器,每有一个地方引用到它时,这个引用计数器就加1。当引用失效的时候,计数器的值就减1,也就是说根据引用计数器的值来判断对象是否存活,若值是0,那么该对象就不再被
2018-01-22 22:20:35 898
原创 JVM进阶之GC(一)内存分代
前言我们知道,java语言与c++语言最大的不同点就是在垃圾回收的处理上,java有了专门的垃圾自动回收机制,而c++需要手动回收内存垃圾。既然java的垃圾回收这么NB,那今天就来整理JVM的垃圾回收这块内容吧。首先得明确几点目的: 1. 为什么需要了解JVM的垃圾回收,让JVM自己去处理不就好了? 2. 是回收什么东西? 3. 是什么时候回收的? 4. JVM是怎么进行垃圾回收
2018-01-21 22:43:09 559
原创 JVM进阶之运行时数据区
前言 最近在看重温JVM相关的知识点,但总感觉看书很枯燥乏味,看别人的博客知识又显得零碎,知识体系不够系统,所以有必要把所见所闻所学的点,好好地梳理成文,加强自己理解程度的同时,挖掘自身的盲点。好了,鸡血不宜多,让我们开始JVM的新篇章。 话说平时开发中的我们有曾想过写过的代码运行在哪儿,比如在类中声明了static类型的变量,在方法中new了一个对象等等……如果这些都不了解,我只能说
2018-01-19 23:08:49 302
原创 源码浅析--String
源码浅析先拿String开刀。试问自己,平常工作中用的那么多,但是真的了解String吗? 想要真正了解一个类,还得从源码入手。(本文JDK源码版本1.7.0_75)public final class String implements java.io.Serializable, ComparableString>, CharSequenceString 实现了Ser
2018-01-16 23:25:55 199
原创 必知必会的单例模式
在开发过程中,有些对象我们至始至终只需要一个实例,比如配置文件、工具类、线程池、缓存、日志对象等,如果创造多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等。基于以上的问题,单例模式应运而生了,下面来看看单例的实现方式吧。v1.0(非线程安全懒汉版)package com.v1;public class Singleton { // 私有构造方法 p
2018-01-11 23:05:27 224 3
原创 如何控制线程执行的顺序?
如何控制线程执行的顺序?要解决如上的题目,得理解题意的重心在哪。关键词:线程与顺序。先来一段多线程执行的代码。public class Test { public static void main(String[] args) { Thread t1 = new Thread(new MyThread1()); Thread t2 = new
2018-01-11 22:56:43 17116 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人