
java虚拟机学习
漠北鹰
与其临渊羡鱼,不如退而结网
展开
-
java内存区域与内存溢出异常
运行时数据区域的简要总结: 1.程序计数器: 特性 线程私有,一个线程一个 功能 当前线程所执行的字节码行号显示器,虚拟机字节码解释器通过改变程序计数器的值来取下一条需要执行的字节码指令,常见的控制语句都需要它来完成 执行java方法,代表的是字节码指令的地址 执行原创 2016-04-18 20:40:05 · 431 阅读 · 0 评论 -
HotSpot虚拟机对象揭秘之对象的创建过程探究
对象是如何创建的? (1)检查 虚拟机遇到new指令,上常量池中找有没有要new的这个类的符号引用,并且检查,类符号引用的类是否是否已经完成了加载,解析和初始化工作,如果没有,先执行类加载的相应过程 (2)分配 为新生对象分配内存,把一块确定大小的内存从java堆中划分出来。。 分配方式: 指针碰撞:加入内存是绝对规整的,用过的放在一边,没用过的原创 2016-04-18 20:42:33 · 709 阅读 · 0 评论 -
hotspot虚拟机中的对象是如何布局的
对象是如何布局的 对象在内存中存储的布局可以分3块区域: 对象头 ,实例数据 ,对齐填充 对象头:在内存分配中已经说过,一部分,保存对象本身的固有信息,一般占32bit或者64bit(和虚拟机的位数相匹配) 另一部分是其类型指针,指定了该对象是哪个类的实例 实例数据: 对象真正有效存储的信息,存储顺序会受到虚拟机的分批额策略参数和再java中定义原创 2016-04-18 20:45:48 · 386 阅读 · 0 评论 -
hotspot虚拟机中对象是如何访问的
对象是如何访问的? 通过栈上的对象引用来访问对象。 引用是如何来访问java堆中的对象的呢?? 主要看具体的虚拟机怎么实现,主流的有两种: 1.句柄访问:在java堆中国划分一部分内存存储句柄的句柄池,引用类型存的是指向该句柄池的地址,然后造句柄池中对应 保存着实例对象的地址 优点:在实例对象发生移动时候(垃圾回收器回收对象,实例对象移动很正常) 就可以只改原创 2016-04-18 20:49:25 · 700 阅读 · 0 评论 -
java虚拟机垃圾回收
java虚拟机垃圾回收缺点 : 垃圾回收的一个潜在的缺点是它的开销影响程序性能。Java虚拟机必须追踪运行程序中有用的对象,而且最终释放没用的对象。优点 : 当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用, 自动释放内存空间,减轻编程的负担。垃圾收集的算法分析 大多数垃圾回收算法使用了根集(root set)这个概念;所谓根集就是正在执行的Java程序可以访问的引用变量原创 2016-08-23 20:20:02 · 481 阅读 · 0 评论 -
java内存结构划分与java虚拟机调优
java内存结构划分java内存主要分为6部分,分别是程序计数器,虚拟机栈,本地方法栈,堆,方法区和直接内存,下面将逐一详细描述。1、程序计数器线程私有,即每个线程都会有一个,线程之间互不影响,独立存储。代表着当前线程所执行字节码的行号指示器。2、虚拟机栈线程私有,它的生命周期和线程相同。描述的是java方法执行的内存模型:每个方法在执行的同时多会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、原创 2016-08-23 20:23:50 · 448 阅读 · 2 评论