Jackyss

导航

 

2020年6月30日

摘要: 1.分代收集算法 根据对象存活周期的不同将内存划分为几块,入JVM中的新生代,老年代,永久代,这样就可以根据各年代特点分别采用最适当的GC算法 1.1在新生代使用复制算法: 因为新生代每次垃圾收集都能发现大批的对象已死,只有少量存活,因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集. 阅读全文
posted @ 2020-06-30 17:31 Jackyss 阅读(733) 评论(0) 推荐(0)
 
摘要: 1.强引用 把一个对象赋给一个引用变量,这个引用变量就是一个强引用,当一个对象被强引用变量引用时,它处于可达状态,是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到JVM也不会被回收,因此强引用是造成Java内存泄漏的主要原因。 2.软引用(SoftReference) 软引用需要用Sof 阅读全文
posted @ 2020-06-30 17:21 Jackyss 阅读(199) 评论(0) 推荐(0)
 
摘要: 1.如何确认垃圾 1.1引用计数器 在Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的方法是用通过引用计数来判断一个对象是否可以回收,即一个对象如果没有任何与之关联的引用,即她们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收 1.2可达 阅读全文
posted @ 2020-06-30 17:12 Jackyss 阅读(105) 评论(0) 推荐(0)
 
摘要: java堆从GC的角度还可以细分为: 新生代(Eden区,From,to区)和老年代 1.新生代 用于存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。新生代又分为eden区,From,to三个区 1.1 Eden区 Java新对象的出生地(如 阅读全文
posted @ 2020-06-30 15:42 Jackyss 阅读(157) 评论(0) 推荐(0)
 
摘要: (1) 基本概念 jvm是运行java代码的虚拟机,包括一套字节指令集,一组寄存器,一个栈,一个垃圾回收,堆和一个存储方法域,jvm是运行在操作系统之上的,它与硬件没有直接的交互 (2)运行程序 我们都知道java的源文件,也就是.java文件,可以通过编译器生成相应的.class文件,也就是字节码 阅读全文
posted @ 2020-06-30 12:00 Jackyss 阅读(377) 评论(0) 推荐(0)