强引用:只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。
软引用:系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中并进行二次回收。
弱引用:被弱引用的关联对象只能生存到下一次垃圾收集发生之前。
虚引用:一个对象是否有虚引用存在,完全不会对其生存时间构成影响。也无法通过虚引用来取得一个对象的实例。虚引用的唯一目的,就是这个对象被收集器回收的时候,收到一个系统通知。
package com.chinaso.phl;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
/**
* @author piaohailin
* @date 2013-12-25
*/
public class Server {
/**
* @param args
* @author piaohailin
* @date 2013-12-25
*/
public static void main(String[] args) {
//强引用
Server s = new Server();
//软引用
SoftReference<Server> soft = new SoftReference<Server>(new Server());
//弱引用
WeakReference<Server> weak = new WeakReference<Server>(new Server());
//虚引用
PhantomReference<Server> hantomReference = new PhantomReference<Server>(new Server(), new ReferenceQueue<Server>());
}
}
分享到:
相关推荐
本系列课程从JVM基础到高级实战,老师手把手教你如何进行JVM调优,思路清晰,没有废话,旨在挑战高薪。 课程亮点: 1、基于阿里arthas进行JVM调优; 2、基于代码排查OOM问题,拒绝空讲; 3、总结JVM通用的调优思路;...
<<JVM内存管理和垃圾回收>> word版 博文链接:https://ayufox.iteye.com/blog/214411
2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...
jvm内存结构; 栈的顺序:先进后出,栈中方法的顺序 jvm调优; 对象 对象的创建过程; 对象在内存中的存储布局; 对象头markword具体有什么: 对象的怎么定位,怎么通过引用找到他,有两个方法; 对象分配内存空间...
JVM调优是一个系统而又复杂的过程,由于Java虚拟机自动管理内存,在大多数情况下,我们基本上不用去调整JVM内存分配,因为一些初始化参数已经可以保证应用服务正常稳定地工作。但是当有性能问题的时候该怎么去调优,...
引用类型是一个对象类型,...只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如 果想中断强引用与对象之间的联系,可以显示的将强引用赋值为n
早期的jvm使用引用计数,现在大多数jvm采用对象引用遍历。对象引用遍历从一组对象开始,沿着整个对象图上的每条链接,递归确定可到达(reachable)的对象。如果某对象不能从这些根对象的一个(至少一个)到达,则将...
第4节jvm初体验-内存溢出问题的分析与解决 [免费观看] 00:17:59分钟 | 第5节jvm再体验-jvm可视化监控工具 [免费观看] 00:21:17分钟 | 第6节杂谈 [免费观看] 00:12:37分钟 | 第7节Java的发展历史00:27:24分钟 | ...
通俗的来讲,jvm主要分为5个部分 程序计数器、虚拟机枝、本地方法枝、 Java 堆、 方法区, 引用大佬总结的概括程序计数器用于存放下一条运行的指令,虚拟机栈和本地方法栈用于存放函数调用堆栈信息, Java 堆用于...
JVM 知识点整理:对象的创建过程类加载分配内存分配方式一:指针碰撞分配方式二:空闲列表如何选择?线程安全问题CAS + 失败重试方法线程本地分配缓存区(TLAB)后续工作 类加载 虚拟机遇到一条 new 指令时,首先...
栈帧局部变量表操作数栈动态连接返回地址运行时常量池对象的创建过程类加载的执行流程图对象创建的过程:对象内存分配方式指针碰撞空闲列表栈上分配:内存逃逸:对象结构分析对象的内存引用分析直接引用图解句柄池...
但是这个对象的引用却是在栈中分配,也就是说在建立一个对象时在堆和栈中都分配内存,在堆中分配的内存实际存放这个被创建的对象的本身,而在栈中分配的内存只是存放指向这个堆对象的引用而已。局部变量 new 出来时,...
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间...
一, 垃圾回收机制 在系统运行过程中会产生一些无用的对象,这些对象一直占用内存,不清理这些无用的对象可能会导致内存...jvm会把虚拟机栈和本地方法栈中正在引用的对象、静态属性引用的对象和常量,作为 GC Roots。
112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...
因为java的内存分配和内存回收,都是由JVM去负责,一个对象是否可以被回收,主要看是否有引用指向此对象,即可达性分析 设计目的: 可以让程序员通过代码的方式来决定某个对象的生命周期 有利用垃圾回收 强引用 ...
然后通过收集每次垃圾回收事件后对象之间的引用关系和对象内存大小, 计算得到集合类对象的内存影响值。接着通过修改字节码的方式获取到集合类 对象使用集合内元素的数据,计算出相应的元素使用影响值。最后...
对象的创建加载:先去检测new指令能否再常量池中定位到一个类的符号引用,如果未被加载、解析、初始化过 执行相应的类加载过程分配内存: 为对象分配空间时采用指针碰