随笔分类 - JVM
摘要:1. Java对象的创建过程 类加载检查 > 分配内存 > 初始化零值 > 设置对象头 > 执行init方法 1.1 类加载检查 虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,就必须执行相
阅读全文
摘要:1. JVM常用参数 配置项 例子 含义 备注 -Xmx -Xmx20m java应用最大可用内存为20M 整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
阅读全文
摘要:1.OopMap 在正式的GC之前,要进行可达性分析来标记出将来可能要宣告死亡的对象。如果每次GC的时候都要遍历所有的引用,这样的工作量是非常大的。因为在可达性分析的时候要保证期间不发生引用关系的变化,所有执行线程要停顿等待,称为“Stop The World”,程序中的线程需要停止来配合可达性分析
阅读全文
摘要:JVM垃圾回收(GC) 1. 判断对象是否可以被回收 引用计数法:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,但无法解决对象相互循环引用的问题。 // 循环引用 Node a=new Node(); Node b=new Node(); a
阅读全文
摘要:Java内存区域 1. 进程与线程 进程:进程是程序的一次执行过程。系统运行一个程序就是进程从创建到运行再到消亡的过程。 线程:一个进程中包含多个线程,线程共享进程的堆和方法区的资源以及直接内存,同时线程私有资源的包括程序计数器、虚拟机栈和本地方法栈。 2. JVM运行时区域 2.1 程序计数器:
阅读全文

浙公网安备 33010602011771号