Grabage Collection GC GC要完毕的三件事情: 哪些内存须要回收? 什么时候回收? 怎样回收? 内存运行时区域的各个部分中: 程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生。随线程而灭。 栈中的栈帧随着方法的进入和退出而有条不紊地运行着出栈和入栈的操作。 每个栈帧中分配多少 ...
分类:
编程语言 时间:
2018-02-04 13:51:19
阅读次数:
185
[TOC] 概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 动态加载和动态连接 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。 类加载的时机 类的生命周期 类 ...
分类:
编程语言 时间:
2018-02-03 23:17:19
阅读次数:
386
GC需要完成: 哪些内存需要回收 什么时候回收 如何回收 如何确定对象不再使用 引用计数算法 给对象添加一个引用计数器,当有一个地方引用它时,计数器值进行加1操作;当引用失效时,计数器值进行减1操作;当计数器值为0,则说明对象不可能再被使用。但是它无法解决循环引用的问题。 上述代码最后面两句将obj ...
分类:
编程语言 时间:
2018-02-03 22:01:33
阅读次数:
230
程序计数器(Program Counter Register):一块较小的内存空间,可看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机的多线程是 ...
分类:
编程语言 时间:
2018-02-03 21:58:25
阅读次数:
154
博文重点: 学习目标:哪些内存需要回收 什么时候回收 如何回收 在基于概念讨论的模型中,主要对Java堆和方法区进行讨论。 why?:一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样。只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,g ...
分类:
编程语言 时间:
2018-02-01 13:06:38
阅读次数:
140
深入理解Java虚拟机 1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收 ...
分类:
其他好文 时间:
2018-01-24 13:59:39
阅读次数:
138
《Java编程思想》 《深入理解Java虚拟机》 《Java并发编程实战》 《Netty权威指南》 ...
分类:
编程语言 时间:
2018-01-19 17:25:46
阅读次数:
195
本文是基于周志明的《深入理解Java虚拟机》 垃圾收集算法 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。 由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的 ...
分类:
编程语言 时间:
2018-01-07 16:10:28
阅读次数:
165
《深入理解Java虚拟机》,《Effective Java》,《Java核心技术 卷1》,《Java并发编程的艺术》,《Java编程思想(第4版)》,《实战Java虚拟机》,《Java性能调优指南》,《大型网站技术架构:核心原理与案例分析》,《Java NIO》,《Head First 设计模式》 ...
分类:
编程语言 时间:
2018-01-01 21:55:41
阅读次数:
192
在此简单的记录一下《深入理解Java虚拟机》第2章的2.3节内容。 对象的创建 这里的对象的创建是指普通的对象(不包括数组和Class对象)。对象的创建简单来说就是执行new的时候,虚拟机做出对应的响应。让我们看看一下虚拟机创建对象的过程: 1.虚拟机遇到new指令时,首先尝试在常量池中定位到对应类 ...
分类:
其他好文 时间:
2017-12-31 23:36:09
阅读次数:
291