java
文章平均质量分 72
BingshuYang
这个作者很懒,什么都没留下…
展开
-
JVM内存划分及GC
java内存模型 程序计数器:程序执行到的位置 虚拟机栈:虚拟机栈是线程私有的,描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于记录存储局部变量表、操作数栈、动态链接、方法出口等信息。 局部变量表:一组变量值存储空间,用于存放方法参数和方法内局部变量,以变量槽为基本单位(Slot),在非静态上下文中,局部变量表的0索引位置是当前变量,也就是this指针,然后是方法参数原创 2018-03-01 09:20:47 · 243 阅读 · 0 评论 -
JVM类加载机制
1.类的加载时机类加载过程: 加载-验证-准备-解析-初始化-使用-卸载 验证-准备-解析 通常称为连接阶段 虚拟机规范并没有规定class文件的类加载时机,但是严格规定了初始化的时机,而初始化之前一定要进行加载-验证-准备,解析则可以在初始化之前也可以在初始化之后。虚拟机规范规定了五种“当且仅当”的情况使类初始化(详细见Page210),需要注意的是数组对象只是创建了一个自动生成的类,不会原创 2018-02-28 17:05:32 · 146 阅读 · 0 评论 -
Java内存模型
Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和内存访问的差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果,注意这里的模型指的是概念模型。主存内与工作内存主内存:JVM中存储变量(局部变量和方法参数除外)的内存区域 工作内存:线程私有的内存,保存了被该线程使用到的变量的主内存副本拷贝 Java内存模型定义了8种操作,它们是原子的: - lock:给变量上锁原创 2018-03-01 16:06:54 · 185 阅读 · 0 评论 -
Java与线程
线程实现 内核线程 内核线程由操作系统调度需要进入内核态,程序一般不直接使用内核线程而是使用内核线程的高级接口——轻量级进程,也就是通常意义上说的线程,内核线程系统调度频繁,资源消耗较大。为1对1模型 用户线程 用户线程由进程独立调度,操作系统无法感知,实现比较复杂,但是资源消耗少。1对多模型 用户线程加轻量级进程混合实现 一个轻量级进程可以映射多个用户线程,集合内核线程和用户线程两者的优点,原创 2018-03-01 16:52:11 · 146 阅读 · 0 评论