上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页
摘要: 强引用就是在程序代码中普遍存在的,类似Object obj=new Object()这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。 软引用是用来描述一些还有用但并非必须的元素。对于它在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二回收,如果这次回收还没有足 阅读全文
posted @ 2019-03-09 14:27 林木声 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中,类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。 阅读全文
posted @ 2019-03-09 14:24 林木声 阅读(94) 评论(0) 推荐(0) 编辑
摘要: (1)应用计数法 (2)可达性分析法 阅读全文
posted @ 2019-03-09 14:24 林木声 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 1、标记-清除法 2、复制算法 4、标记-整理法 5、分代收集算法 阅读全文
posted @ 2019-03-09 14:22 林木声 阅读(182) 评论(0) 推荐(0) 编辑
摘要: JVM内存分为哪几部分,这些部分分别都存储哪些数据? 线程隔离的数据区:程序计数器、Java虚拟机栈、本地方法栈。 由所有线程共享的数据区:Java堆、方法区。 程序计数器 可以看作当前线程所执行的字节码的行号指示器。 Java虚拟机栈 Java虚拟栈描述的是Java方法执行的内存模型:每个方法在执 阅读全文
posted @ 2019-03-09 14:21 林木声 阅读(128) 评论(0) 推荐(0) 编辑
摘要: Java 中的 volatile 关键字有两个主要的作用,一个是保证内存的可见性,还有一个作用就是禁止指令重排序的发生。 上面我们已经简答的提到了 volatile 关键字的作用,一个是保证内存的可见性,还有防止指令重排序。 下面再来解释一下内存可见性 内存可见性:当一条线程修改了某个值,这个新值对 阅读全文
posted @ 2019-03-09 14:18 林木声 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 栈溢出: 堆内存溢出: 阅读全文
posted @ 2019-03-09 14:16 林木声 阅读(1299) 评论(0) 推荐(0) 编辑
摘要: 一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法(如果覆盖了finalize()方法),并且在下一次垃圾回收器发生时,才会真正回收对象占用的内存。 至于为什么在下一次垃圾回收动作发生时才会回收内存,原因是如果一个对象覆盖了 finalize() 方法,那么在真正被宣告 阅读全文
posted @ 2019-03-09 14:12 林木声 阅读(1216) 评论(0) 推荐(0) 编辑
摘要: 不会,在下一个垃圾回调周期中,这个对象将是被可回收的。 也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。 阅读全文
posted @ 2019-03-09 14:09 林木声 阅读(2677) 评论(0) 推荐(0) 编辑
摘要: 类加载器的双亲委托模型并不是一个强制的约束模型,而是 Java 设计者推荐给开发者的一种加载器方式。上面类加载器的父子关系一般不会以继承的方式实现,而是采用组合的关系来复用父类加载器的代码。 工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完 阅读全文
posted @ 2019-03-09 14:06 林木声 阅读(220) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页