【转】Java垃圾回收机制

这是在知乎上看到的一个关于Java垃圾回收机制的回答,写得言简意赅,在此收藏; 原文链接:https://www.zhihu.com/question/35164211 Java和C++在内存分配和管理上有什么区别? Java与C++之间有一堵由动态内存分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人想出来。 对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权利的皇帝,也是从事最基础工作的劳动人民-----既拥有每一个对象的所有权,又担负着每一个对象从生命开始到终结的维护责任。 对于Java程序员来说,虚拟机的自动内存分配机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码, »

Java JDK动态代理

介绍 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。 JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。 使用 首先创建接口 public interface Subject { void test(); } 创建实现类 public class SubjectImpl implements Subject »

Java引用类型:强引用、软引用、弱引用和虚引用

介绍 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足, »

[转] HashMap实现原理及源码分析

转自 http://www.cnblogs.com/chengxiao/p/6059914.html 介绍 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 目录 什么是哈希表 HashMap实现原理 »

[转] Java并发编程:volatile关键字解析

转自 http://www.cnblogs.com/dolphin0520/p/3920373.html 开始   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。 »

JAVA Clone浅克隆与深克隆

介绍 一直以来只知道Java有clone方法,该方法属于Object的,对于什么是浅克隆与深克隆就比较模糊了,现在就来补充学习一下。 概念 浅拷贝(浅克隆) 复制出来的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。 深拷贝(深克隆) 复制出来的所有变量都含有与原来的对象相同的值,那些引用其他对象的变量将指向复制出来的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 实现 Student.java public class Student implements Cloneable { private »

JAVA ENUM 枚举的简单使用

介绍 枚举可以用来表示一系列状态,比如颜色、星期、订单状态等,虽然功能很小,但大大方便了开发。 //定义颜色枚举类 public enum Color { RED, GREEN, BLANK, YELLOW } Color.RED Color.GREEN 应用 下面展示一下用枚举表示订单状态 public enum OrderStatus { ORDER_STATUS_ »