07 2019 档案

摘要:对象的内存分配,主要就是堆上分配(也可能结果JIT编译后被拆散为标量类型并间接在栈上分配)。对象主要分配在新生代Eden区,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况分配在老年代上。具体分配取决于垃圾收集器组合使用情况以及虚拟机参数设置 1. GC 1) 新生代GC(Mino 阅读全文
posted @ 2019-07-29 18:42 爱上咖啡的唐 阅读(142) 评论(0) 推荐(0)
摘要:1. 并发与并行 1) 并发:多条垃圾收集器线程并行工作,用户线程处于等待状态 2) 并行:用户线程和垃圾收集线程同时执行(不一定并行,可能会交替执行) 2. Serial收集器(新生代,单线程,复制算法收集器,最基本,最悠久的收集器,JDK1.3.1版本之前) 1) 单线程收集器:不表示只使用一个 阅读全文
posted @ 2019-07-29 18:41 爱上咖啡的唐 阅读(139) 评论(0) 推荐(0)
摘要:1. 标记-清除算法(mark-sweep)最基础的算法 首先标记要回收的对象,然后一次性清除 1) 有两个缺点 l 清除效率不高 l 可能会产生大量不连续的内存碎片,当一个较大对象需要分配内存时可能会提前触发另一次垃圾回收 2) 分为存活,可回收,未使用三个状态 2. 复制收集算法(copying 阅读全文
posted @ 2019-07-09 19:41 爱上咖啡的唐 阅读(550) 评论(0) 推荐(0)
摘要:(一) 引用计数法 每有一个引用就加1,每失效一个就减1,为0表示可回收;但是此方法无法解决相互引用的情况 (二) 根搜索算法 从一系列的GCRoots对象为起点向下搜索,搜索的路径称为引用链,当一个对象没有任何引用链和GCRoots相连(也可以说成GCRoots到该对象不可达),则说明该对象可回收 阅读全文
posted @ 2019-07-05 23:38 爱上咖啡的唐 阅读(176) 评论(0) 推荐(0)
摘要:(一) 程序计数器(program counter register线程私有) 当前线程执行字节码的行号指示器 1. 分支、循环、跳转、异常处理、线程恢复等依赖计数器完成 2. 当执行的是native方法时,值为空 3. Jvm中唯一没有内存溢出的 (二) Java虚拟机栈(Java virtual 阅读全文
posted @ 2019-07-05 22:55 爱上咖啡的唐 阅读(205) 评论(0) 推荐(0)