自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

x

越努力,越幸运

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除