
JVM
王留香
闲暇时间把云笔记上的一些学习内容分享上来,希望不会把同行带到沟里
展开
-
JVM-GC算法 垃圾收集器
jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的.对象存活判断判断对象存活一般有两种方式:1.引用计数法对象每被引用一次,引用计数加1,每释放一次引用,计数器减1,当计数为0时,对象可被回...转载 2019-01-03 15:16:06 · 180 阅读 · 0 评论 -
JVM概述
1.jvm的启动,先看一副图 这个是jvm的启动流程,从加载jvm的配置到找到JVM.dll找到我们的程序的主入口main方法的过程。 2.JVM的整体架构 这个是jvm的基本结构,jvm有的功能这里都展现出来的,加载class文件到方法区,生成对象到堆中,每个线程的私有的栈,垃圾收集器,实际执行引擎是这里的核心,它与所有的模块都有或多或少的交互...翻译 2019-01-04 15:55:19 · 125 阅读 · 0 评论 -
JAVA类加载机制
1.类加载的定义1.1 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。1.2 类加载器并不需要等到某个...转载 2019-01-02 17:09:34 · 121 阅读 · 0 评论 -
JVM内存结构
先看一张图,这张图能很清晰的说明JVM内存结构布局。 JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配;方法区存储类信息、常量、静态变量等数据,是线程共享的区域,为与Java堆区分,方法...转载 2019-01-02 18:19:34 · 144 阅读 · 0 评论 -
Win10查看占用CPU最多的JAVA线程
准备工作1.windows下查询占用CPU情况工具Sysinternals Process Explorer2.起一个多线程代码开始排查运行Sysinternals Process Explorer,找到CPU占用最高的JAVA进程,PID为4388查看JAVA进程4388的Properties的Threads信息,查看CPU使用率最高的TID为2808j...原创 2019-03-30 15:05:32 · 2110 阅读 · 0 评论 -
偏向锁,轻量级锁,自旋锁和重量级锁
jdk1.6之前,synchronized实现是在线程状态“运行”-“阻塞”-“运行”之间切换jdk1.6之后,因为线程状态间的切换低效,所以对synchronized实现同步功能进行了优化,引入偏向锁,轻量级锁,自旋锁和重量级锁等概念,来提高synchronized实现同步锁的效率。synchronized获取不到锁之后,不会立即阻塞线程。随着锁竞争不断激烈,JVM处理锁的方案也不断升级,按...原创 2019-04-26 11:22:31 · 1678 阅读 · 0 评论 -
偏向锁,轻量级锁,自旋锁和重量级锁
jdk1.6之前,synchronized实现是在线程状态“运行”-“阻塞”-“运行”之间切换jdk1.6之后,因为线程状态间的切换低效,所以对synchronized实现同步功能进行了优化,引入偏向锁,轻量级锁,自旋锁和重量级锁等概念,来提高synchronized实现同步锁的效率。synchronized获取不到锁之后,不会立即阻塞线程。随着锁竞争不断激烈,JVM处理锁的方案也不断升级,按...原创 2019-04-22 16:47:40 · 441 阅读 · 0 评论