JVM
黑曼巴dengyanliang
时常保持一颗奋进的心!
展开
-
java 堆和栈
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集转载 2015-10-18 21:54:40 · 287 阅读 · 0 评论 -
垃圾收集器
本文只是以HotSpot虚拟机为例。 1、Serial收集器:新生代、单线程、复制算法。 该收集器在执行的过程中,只会使用一个CPU或者一条收集线程去完成垃圾收集工作,并且会暂停其他所有的工作线程,直到它收集结束。虽然如此,但是,它简单而高效,对于限定单个CPU的环境来说,不会产生由于线程切换而引起的开销(从这一点也可以看出,多线程未必比单线程快)。 2、ParNew收集器:新原创 2016-04-13 22:34:23 · 307 阅读 · 0 评论 -
JVM的内存区域划分
首先看一个java程序具体的执行过程: 如图所示,首先java源代码文件(.java后缀)会被java编译器编译为字节码文件(.class文件),然后由JVM中类加载器(Class Loader)加载各个类的.class文件,加载文笔之后,原创 2015-10-22 22:36:35 · 1331 阅读 · 0 评论 -
垃圾收集算法
1、在介绍垃圾收集算法之前,首先介绍一下其他的算法。 ①引用计数算法:给对象添加一个引用计数器,每当有一个地方引用时,就加1,当引用失效时,就减1,。任何时刻计数器为0的对象就是不可能再被使用的。 但是java中并没有选择该算法来管理内存,主要原因是因为很难解决对象之间的相互循环引用。 ②根搜索算法:通过名为“GC Roots”的对象做为起始点,从这些节点开始,向下搜索,搜索所走过的原创 2016-04-12 22:26:11 · 316 阅读 · 0 评论