
java虚拟机
文章平均质量分 76
dianziwenyou
这个作者很懒,什么都没留下…
展开
-
深入理解JVM(二):hotspot虚拟机对象
hotspot虚拟机对象2.1 对象的创建1.检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程2.分配内存接下来将为新生对象分配内存,为对象分配内存空间的任务等同于把一块确定的大小的内存从Java堆中划分出来。 假设Java堆中内存是绝对规整的,所有用转载 2017-03-09 20:45:48 · 208 阅读 · 0 评论 -
深入理解JVM(三):OutOfMemoryError异常
OutOfMemoryError异常3.1 Java堆溢出Java堆用于存储对象实例,只要不断的创建对象,并且保证GCRoots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在数量到达最大堆的容量限制后就会产生内存溢出异常。 如果是内存泄漏,可进一步通过工具查看泄漏对象到GC Roots的引用链。于是就能找到泄露对象是通过怎样的路径与GC Roots相关联并导致垃圾收集器无法自动回收它们转载 2017-03-09 21:18:38 · 493 阅读 · 0 评论 -
深入理解JVM(四):垃圾收集
垃圾收集栈中的栈帧随着方法的进入和退出而有条不紊的执行这出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来是就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内不需要过多考虑回收问题,因为方法结束或者线程结束时,内存就跟着回收了。因此我们主要学习java堆和方法区的内存分配和回收。1.判断对象存活1.1 引用计数器法给对象添加一个引用计数器,每当由一个地方引用它时,计数转载 2017-03-10 11:22:54 · 288 阅读 · 0 评论 -
深入理解JVM(一):JVM内存区域
JVM内存区域Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、本地方法栈、堆、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区 1.1 程序计数器程序计数器是一块较小的内存,他可以看做是当前线程所执行的行号指示器。字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码的指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要转载 2017-03-09 20:39:11 · 256 阅读 · 0 评论