jvm
文章平均质量分 80
q294881866
这个作者很懒,什么都没留下…
展开
-
JVM指令
字节码助记符指令含义0x00nop什么都不做0x01aconst_null将null推送至栈顶0x092iconst_m1将int型-1推送至栈顶0x03iconst_0将int型0推送至栈顶0x04iconst_1将int型1推送至栈顶0x05iconst_2将int型2推送至栈顶0x06iconst_3将int型3推送至栈顶0x07iconst_4将int型4推送至栈顶0x08iconst_5原创 2017-07-07 17:42:58 · 286 阅读 · 0 评论 -
JVM对象
对象Java虚拟机采用自动的内存管理和自适应的优化策略。但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的。逃逸分析:对象的作用范围只在本线程范围,如方法(包括静态方法)中new 对象,这个对象是不可能被其它线程共享。可以直接在栈上分配内存。栈上数据在出栈后会释放内存,不需要GC回收。大对象:虚拟机栈容量有限,大的对象会直接在堆上分配。堆内存回收频原创 2017-07-10 10:55:55 · 208 阅读 · 0 评论 -
对象引用分析
对象的三种状态:可达的 从根节点可以触及到这个对象可复活的 一旦所有引用被释放,就是可复活状态因为在finalize()中可能复活该对象不可达的 在finalize()后,可能会进入不可触及状态不可达的对象不可能复活可以回收引用标记Java虚拟机提供自动内存管理机制。在GC中,没用的对象,内存是要回收的。如何高效判断对象存活是个重要的问题。引用...原创 2017-07-10 10:56:03 · 287 阅读 · 0 评论 -
对象内存布局与访问
对象内存布局 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头 HotSpot虚拟机的对象头包括两部分信息:运行时数据和类型指针。运行时数据 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。原创 2017-07-10 10:56:00 · 158 阅读 · 0 评论 -
对象的创建
一个简单的创建对象语句Clazz instance = new Clazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行init方法等。主要流程如下: 1. 类加载检查 JVM遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必...原创 2017-07-10 10:55:57 · 233 阅读 · 0 评论 -
对象回收
回收 对象回收对象在不可达的情况下,如果对象覆盖finalize()方法,而且finalize()没有被调用过。这些对象会放置在F-Queue队列中,由Finalizer线程执行。由于是单线程,线程异常的情况导致线程不能执行下去也是可能的。 finalize()方法类似析构函数,在对象结束的时候会被调用。但这并不是推荐的使用方法。客观上,没有什么操作非得在这个时候执行。子类覆盖finaliz原创 2017-07-10 10:56:05 · 236 阅读 · 0 评论 -
内存模型
如果了解java虚拟机更系统的操作。请阅读 Charlie Hunt , Binu John著《java性能优化权威指南》,James Gosling,Java之父、Steve Wilson,Oracle公司工程副总裁写序。Java虚拟机运行时数据区: PC寄存器(program counter):程序计数器线程私有的较小的内存空间,保存当前线程所执行的字节码指令地址。在虚拟机...原创 2017-07-10 10:56:11 · 245 阅读 · 0 评论 -
Jvm垃圾收集算法
标记-清除标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象 标记-整理 根据老年代的特点提出标记-整理算法。它在标记-清除算法的基础上做了一些优化。和标记-原创 2017-07-10 10:56:14 · 238 阅读 · 0 评论 -
垃圾收集器
垃圾收集器引用计数器:从gc日志可以看出是回收了,java虚假没有选用引用计数器算法管理内存可达性分析算法?线程池中线程是维持一个数量还是,用已经有的线程?回收方法区垃圾收集器垃圾收集器根据应用场景和内存回收范围来选择。根据新生代、老年代,高性能服务器、客户端,计算密集场景、高响应场景。选择不同的收集器。单线程收集器单线程收集器,...原创 2017-07-10 10:56:19 · 238 阅读 · 0 评论 -
Class文件格式
Java字节码可以以非文件的其它方式存在:理解java字节码文件重要的几个属性: 字节码文件信息(ClassFile结构) 描述符(descriptor) 类常量池(Constant pool) 访问标志(flags) Code属性 ConstantValue LineNumberTables Exception ta...原创 2017-07-07 17:56:27 · 219 阅读 · 0 评论 -
Synchronized
SynchronizedSynchronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。在HotSpot JVM实现中,锁有个专门的名字:对象监视器。先来看下利用synchronized实现同步的基础:Java中的每一个非null对象都可以作为锁。具体表现为以下3种形式。 对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类...原创 2017-07-10 10:55:30 · 191 阅读 · 0 评论