随笔分类 - JVM
Java虚拟机
摘要:栈帧的内部结构 一个线程对应一个栈空间(且是线程独有的),每个线程调用的方法都会封装一些信息作为栈帧入栈,当前正在执行的方法,也就是处于栈顶的栈帧称为当前栈帧,当前栈帧对应的方法称为当前方法,当前方法所在的类称为当前类 局部变量表 操作数栈 动态链接 方法出口 附加信息
阅读全文
摘要:概念 1、它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础场景都需要依赖这个程序计数器来完成 2、字节码解释器工作时,就是通过改变PC寄存器的值来获取下一条即将要执行的字节码指令 3、它是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域 图解 面
阅读全文
摘要:前言 1、四大垃圾回收算法 引用计数 复制拷贝 标记清除 标记压缩整理 2、落地实现 串行回收:-XX:+UseSerialGC 并行回收:-XX:+UseParallelGC 并发回收:CMS(ConcurrentMarketSweep) G1 3、java的gc回收的类型主要有几种: UseSe
阅读全文
摘要:前言 Java中的引用一共有四种,它们分别是强引用、软引用、弱引用和虚引用,下面我们来分别介绍。 一、强引用(默认支持模式) 强引用就是我们平常用的类似于“Object obj = new Object()”的引用,只要obj的生命周期没结束,或者没有显示地把obj指向为null,那么JVM永远不会
阅读全文
摘要:理解 所谓GC Roots就是一组必须活跃的引用。 为了解决引用计数法中的循环引用问题,Java使用了可达性分析的方法 可达性分析法 基本思路就是通过一系列名为“GC Roots” 的对象作为起始点,从这个被称为GC Roots的对象开始向下搜索,如果一个对象到GC Roots没有任何引用链相连时,
阅读全文
摘要:前言 谈常用GC回收算法之前,先说一下引用计数法 算法原理 引用计数算法很简单,它实际上是通过在对象头中分配一个空间来保存该对象被引用的次数。如果该对象被其它对象引用,则它的引用计数加一,如果删除对该对象的引用,那么它的引用计数就减一,当该对象的引用计数为0时,那么该对象就会被回收。 比如说,当我们
阅读全文
摘要:在IDEA(集成开发环境)中设置JVM的初始内存大小和最大内存大小,以及打印GC回收日志详细信息 -Xms1024m -Xmx1024m -XX:+PrintGCDetails 打印JVM参数信息(偏重于看默认的垃圾回收器) java -XX:+PrintCommandLineFlags -vers
阅读全文
摘要:问题引入 本例子想要表达的是,count++这行代码在汇编级别不是原子操作要想解决这个问题,有两种方式:1、可以在count++外面加上synchronized代码块2、利用Java内部提供的AtomicInteger类 1 package com.lzp.juc.cas; 2 3 import j
阅读全文