![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 85
K-Darker
1、每天读书;2、学习新的语言;3、战胜你的恐惧;4、升级你的技能;5、承认自己的缺点;6、向你佩服的人学习
展开
-
Java SE1.6 对象头
1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。2 术语定义术语英文说明转载 2017-05-12 10:37:54 · 309 阅读 · 0 评论 -
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛转载 2017-05-18 16:43:11 · 368 阅读 · 0 评论 -
HSDB(查看对象内存HSDB)
是一款内置于SA的GUI的调试工具java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.CLSHSDB openjdk源码 D:\SoftWare\Java\openjdk\hotspot\agent\src\sh原创 2017-05-19 09:45:49 · 4177 阅读 · 0 评论 -
java函数式编程的原理的理解
什么是函数式编程?百科定义:函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。例子List<Integer> tests = new ArrayList<>();tests.add(0);tests.add(1);count = test...原创 2018-03-12 14:00:02 · 1397 阅读 · 1 评论 -
jvm的垃圾回收和回收策略
垃圾收集算法1.标记-清除算法 (Mark-Sweep)分成标记和清除 两个阶段 :首先标记出所有需要回收的对象 标记完成后统一回收优点:简单缺点:效率问题 空间问题 会产生大量的不连续的内存碎片 分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作2.复制算法(Copying)原理:可用内存按容量划分为大小相等的两块,每次只使用一块 当使用完成了之后...原创 2019-04-10 21:40:23 · 193 阅读 · 0 评论 -
虚拟机的类加载机制
类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。1.初始化遇到new、getstatic、putstatic或invokestatic这4...原创 2019-04-11 15:37:58 · 94 阅读 · 0 评论 -
java的内存模型与线程
Java的内存模型缓存一致性(Cache Coherence)Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。分成主内存和工作内存内存间交互操作关于主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存、如何从工作内存同步回主内存之类的实现细节,Java内存模型中定义了以下8种操作来完成,虚拟...原创 2019-04-11 19:13:47 · 122 阅读 · 0 评论 -
JVM内存区域详解
运行时数据区域程序计数器 : (线程隔离) 较小的内存空间 当前线所执行的字节码的行号指示器。执行的java方法 表示 当前执行的字节码的指令地址 执行的是native方法 就是为空(undefined)java虚拟机栈 : (线程隔离) 每次执行方法会创建一个栈帧 局部变量表(一组变量值的存储空间 存放方法的参数和方法内部定义的局部变量 以Slot为单位 非static的方法 0位置就是t...原创 2019-04-09 08:03:40 · 237 阅读 · 0 评论