sjtu_chenchen
硕士毕业于上海交通大学,先后就职于各类大厂,在java、devops、大数据实时计算方向有深入的研究
展开
-
《深入理解java虚拟机》之垃圾回收
判断对象存活 引用计数算法(弃用,难以解决循环引用) 可达性分析算法(GC Roots对象向下搜索) (如果对象没有与GC Roots相连的引用链,它会被标记,然后执行finalize()筛选,当对象没有覆盖finalize()方法, finalize()方法被虚拟机调用过,该对象被回收。finalize()方法里只要使得该对象与引用链原创 2015-09-26 15:24:48 · 483 阅读 · 0 评论 -
《深入理解java虚拟机》之字节码执行引擎
执行引擎: 解释执行 编译执行栈帧: 局部变量表 以变量槽slot为最小单位 第0位索引的slot默认为this slot可以重用 操作栈 Code属性中max_stacks设置了最大深度原创 2015-10-14 20:13:07 · 686 阅读 · 0 评论 -
《深入理解java虚拟机》之内存管理
内存分区 程序计数器(线程私有) Java虚拟机栈(线程私有) 本地方法栈(线程私有) Java堆 (线程共享) 方法区(线程共享) 运行时常量池对象创建 内存分配 指针碰撞(要求堆中内存规整) 空闲列表 内存空间初始化原创 2015-09-26 11:01:34 · 472 阅读 · 0 评论 -
《深入理解java虚拟机》之类加载机制
类的加载类加载有三种方式: 1、命令行启动应用时候由JVM初始化加载 2、通过Class.forName()方法动态加载 3、通过ClassLoader.loadClass()方法动态加载public class HelloWorld { public static void main(String[] args) throws ClassNotFoundException原创 2015-10-14 17:58:52 · 476 阅读 · 0 评论 -
《深入理解java虚拟机》之类文件结构
Java虚拟机语言无关性Java Class文件结构1,头4个字节为魔数,用于确定这个文件是否为一个能被虚拟机接受的Class文件,值为:0xCAFEBABE2,紧接着4个字节,5,6字节是次版本号,7,8字节是主版本号。高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件,即使文件格式并未发生变化。3,紧接着主次版本号之后的是常量池入口,1,常量池是Class文件结原创 2015-10-14 14:23:42 · 492 阅读 · 0 评论 -
《深入理解java虚拟机》之内存模型与安全
不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。我们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层平台内存管理细节,对于java开发人员,原创 2015-10-14 22:11:07 · 2806 阅读 · 0 评论