Tag Archives | jvm

SoftReference, WeakReference 和 PhantomReference

一、为什么要有这些**Reference

以前一直没搞明白,java中对象直接本身就是传引用reference,不同于c++的可以指针也可以引用。但java.lang.ref包下面居然还专门定义了几个**Reference:SoftReference, WeakReference 和 PhantomReference。这几个类是干什么用的呢?为什么要专门定义这几种特殊的引用?

作为引用,当然都是指向其被引用的对象。但是不同于一般的引用(和这几种引用对照被称为强引用 Strong reference),定义为这几种类型的引用不防碍 Java 垃圾回收器对它们所指向的对象进行回收。即另个特征:1)保留了引用本身的基本要求,即保持对使用对象的引用;2)可以使 JVM在内存不够用的时候对使用对象进行回收

二、代码关系

这几个类都是定义在包java.lang.ref下面,都是publi[......]

阅读全文

Tags: , ,

Comments { 0 }

Java 类加载器 ClassLoader笔记

1. java.lang.ClassLoader类的作用

根据类名称,查找字节码,根据字节码生成Java类。即根据class name,查找class的字节码,生成Class实例。

java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即?java.lang.Class类的一个实例。除此之外,ClassLoader还负责加载 Java 应用所需的资源,如图像文件和配置文件等。

2. ?ClassLoader 中与加载类相关的方法

方法

说明

getParent()

返回该类加载器的父类加载器。

loadClass(String name)

加载名称为?name的类,返回的结果是?java[......]

阅读全文

Tags: , ,

Comments { 0 }