摘要:
jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数 jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件) jstack(Stack Trace for Java)命令 用于生成虚拟机 阅读全文
摘要:
在JAVA语言中可以作为GC Root的对象包括下面几种: 局部变量表中引用对象 静态属性引用的对象 方法区常量 引用的对象 本地方法栈中(JNI)引用的对象. 永生代中垃圾收集主要回收两部分内容:废弃常量和无用的类. 在大量使用反射、动态代理、CGLib等ByteCode框架、动态生成JSP以及O 阅读全文
摘要:
innodb的锁分两类:lock和latch。 其中latch主要是保证并发线程操作临界资源的正确性,要求时间非常短,所以没有死锁检测机制。latch包括mutex(互斥量)和rwlock(读写锁)。 而lock是面向事务,操作(表、页、行)等对象,用来管理共享资源的并发访问,是有死锁检测机制的。现 阅读全文
摘要:
java 静态变量在编译阶段就已经明确位置, 所以静态变量的声明与初始化在编码顺序上可以颠倒。也就是说可以先编写初始化的代码,再编写声明代码。如: 所以如下代码可以被重读下 阅读全文
摘要:
转自: http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html 指令从0x00-0xc9 没有0xba 常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈。 0x0 阅读全文
摘要:
栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈数据区的组成元素。每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程。 每一个栈帧在编译程序代码的时候所需要多大的局部变量表,多深的操作数栈都已经决定了,并且写入到方发表的 Code 属性之中,一次一个 阅读全文
摘要:
类的加载过程 加载阶段 主要完成以下3件事情:1.通过“类全名”来获取定义此类的二进制字节流2.将字节流所代表的静态存储结构转换为方法区的运行时数据结构3.在java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口 验证阶段 这个阶段目的在于确保Class文件 阅读全文
摘要:
synchronized的执行过程: 1. 检测Mark Word里面是不是当前线程的ID,如果是,表示当前线程处于偏向锁 2. 如果不是,则使用CAS将当前线程的ID替换Mard Word,如果成功则表示当前线程获得偏向锁,置偏向标志位1 3. 如果失败,则说明发生竞争,撤销偏向锁,进而升级为轻量 阅读全文