转自:http://www.cnblogs.com/iyangyuan/p/4631696.html jvm虚拟内存分布图: 程序计数器:JVM执行程序的流水线。 本地方法栈:JVM调用操作系统方法所使用的栈。 虚拟机栈:JVM执行Java代码所使用的栈。 方法区:存放一些常量、静态变量、类信息等; ...
分类:
编程语言 时间:
2017-06-18 19:25:27
阅读次数:
286
运行时数据区包括五部分: 程序计数器,JVM栈,本地方法栈,堆,方法区,前三种线程私有,后两种内存分配是动态的,所以GC只关注这两部分。 程序计数器:线程执行字节码的行号指示器,记录字节码指令地址,执行本地方法为空 JVM栈:方法执行时建立栈帧,存放 局部变量表,基本数据类型的值,对象引用,动态链接 ...
分类:
其他好文 时间:
2017-06-18 18:12:46
阅读次数:
154
UML统一建模语言初学 2011-1-27 作者:佚名 来源:网络 2011-1-27 作者:佚名 来源:网络 2)内部类: 我们使用诸如下边的方式表示内部类,定义在方法区 3)访问描述符: 对于Java,我们用如下的符号表示访问描述符: 我们在下图详细说明了各个访问描述符的一些权限设定: 4)抽象 ...
分类:
编程语言 时间:
2017-06-18 13:18:34
阅读次数:
239
一、概述 运行时数据区中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭的 因此,他们的内存分配和回收是确定的,在方法或线程结束时就回收。而Java堆和方 法区则是不确定的,程序运行过程中创建对象的大小是不定的,只有在程序处于运行 期才能知道所需内存的大小 二、“存活算法” 要判断对象是否 ...
分类:
编程语言 时间:
2017-06-17 17:09:21
阅读次数:
183
static 方法不需要实例化,静态方法在JVM刚加载的时候就编译过了.在程序的运行过程中随时可以调用,不需要去实例化某个对象然后再去调用,可以直接用类名去调用,直到结束释放内存,且静态方法只能调用类静态变量,不能调用非static修饰变量,且任意一个对象对静态方法进行修改,其他调用该静态方法也会相 ...
分类:
编程语言 时间:
2017-06-16 14:18:53
阅读次数:
155
今天第一次看到closest方法,以前也从来没用过。 该方法从元素本身开始往上查找,返回最近的匹配的祖先元素。 1、closest查找开始于自身,parents开始于元素父级 2、closest向上查找,知道找到一个匹配就停止查找,parents一直查找到根元素,并将匹配的元素加入集合 3、clos ...
分类:
其他好文 时间:
2017-06-14 18:12:24
阅读次数:
151
一、同步类容器 同步类容器都是线程安全的,但在某些场景下可能需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中的所有元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发的修改容器时,可能会表现出意外的行为,最经典的便是Concurrent ...
分类:
编程语言 时间:
2017-06-14 11:36:47
阅读次数:
141
Java程序为了提高程序的效率,就对数据进行了不同的空间分配: 具体的划分是如下的5个内存分配方式: 1.栈:存放的是局部变量 2.堆:存放的是所有new出来的东西 3.方法区: 4.本地方法区:(和系统相关) 5.寄存器:(CPU使用) 局部变量:在方法定义中或者方法声明上的变量都称为局部变量 堆 ...
分类:
编程语言 时间:
2017-06-14 02:13:03
阅读次数:
147
一、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向 ...
分类:
编程语言 时间:
2017-06-13 21:09:33
阅读次数:
188
方法区(Method Area)与java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与java堆分开。 ...
分类:
编程语言 时间:
2017-06-13 11:22:42
阅读次数:
125