jvm
wintershii
越努力越幸运
展开
-
JVM—Java内存区域
JVM—Java内存区域最近开始看《深入理解Java虚拟机》这本书,对于一个合格java程序员,掌握jvm尤其是GC垃圾回收技术是必须的。昨天看完了第二章——java内存区域与内存溢出异常,在这里简要总结一下。Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来1.运行时数据区域上图就是java虚拟机运行时的数据区,接下来我们依...原创 2019-01-25 18:11:49 · 145 阅读 · 0 评论 -
JVM—垃圾收集器与内存分配策略
JVM—垃圾收集器与内存分配策略尽管现在内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了"自动化"时代,但我们之所以要学习GC和内存分配,就是当需要排查各种内存溢出,内存泄露问题时,当垃圾收集称为系统达到更高并发量的瓶颈时,我们就需要对这些"自动化"的技术实施必要的监控和调节.我们之前说过java内存运行时区域的各个部分:程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而...原创 2019-02-20 00:14:10 · 159 阅读 · 0 评论 -
JVM—HotSpot GC算法实现
1.枚举根节点之前说的寻找堆中"垃圾"内存的方法是使用可达性分析算法,用一系列的GC Roots去找到引用链,进而找到已经没有用的对象,但其实现起来有两个要注意的地方1.GC Roots往往选取全局性的引用(方法区中的常量或静态属性)和执行上下文(虚拟机栈或本地方法栈中的本地变量表),而很多应用仅仅方法区就有数百兆,如果逐个检查其中的引用,会很耗费时间2.GC停顿: 在执行可达性分析时,不...原创 2019-04-14 13:25:37 · 572 阅读 · 0 评论 -
JVM—虚拟机类加载机制
JVM—虚拟机类加载机制虚拟机把描述类的数据从Class文件加载到内存, 并对数据进行校验, 转换解析和初始化 , 最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制与那些编译时需要进行连接工作的语言不同, 在Java语言中, 类型的加载,连接和初始化过程都是在程序运行期间完成的, 这种策略虽然会令类加载时稍微增加一些性能开销, 但是会为Java应用程序提供高度灵活性1.类...原创 2019-07-30 15:35:21 · 96 阅读 · 0 评论 -
JVM—虚拟机字节码执行引擎
执行引擎是Java虚拟机最为核心的组成部分之一. 虚拟机是一个相对于物理机的概念, 两种及其都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器, 硬件, 指令集和操作系统层面上的, 而虚拟机的执行引擎则是由自己实现的, 因此可以自行指定指令集与执行引擎的结构体系, 并且能够执行哪些不被硬件直接支持的指令集格式1.运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调...原创 2019-07-30 15:36:07 · 116 阅读 · 0 评论 -
JVM—Java内存模型
JVM—Java内存模型并发处理的广泛应用是使得Amdahl定律代替摩尔定律 成为计算机性能发展源动力的根本原因, 也是人类"压榨"计算机运算能力的最有利武器由于计算机的运算速度与它的存储和通信子系统差距太大, 大量的时间都花费在磁盘I/O,网络通信或者数据库访问上, 如果不希望处理器在大部分时间里都处于等待其他资源的状态, 让计算机同时处理几项任务是非常有效的"压榨’'手段1.Java...原创 2019-07-30 15:46:11 · 118 阅读 · 1 评论 -
JVM—Java线程与锁
JVM—Java线程与锁1.线程的实现线程是比进程更轻量级的调度执行单位, 线程的引入, 可以把一个进程的资源调度和执行调度分开, 各个线程既可以共享进程资源(内存地址文件I/O等), 又可以独立调度(线程是CPU调度的独立单位)线层的实现方式主要有三种 : 使用内核线程实现, 使用用户线程实现和使用用户线程加轻量级进程混合实现1> 使用内核线程实现内核线程就是直接由操作系统内核...原创 2019-07-30 15:46:54 · 115 阅读 · 0 评论 -
JVM—Java锁优化
1.自旋锁与自适应旋锁之前提到的互斥同步对性能最大的影响是阻塞的实现, 挂起线程和恢复线程的操作都需要转入内核态中完成, 这些操作给系统的并发性能带来了很大的压力. 但是,很多时候共享数据的锁定只会持续很短的时间,为了这段时间去挂起和恢复线程不值得.如果物理机有一个以上的CPU,能让两个或两个以上的线程同时并行执行, 我们就可以让后面请求锁的那个线程"稍等一下",但不放弃处理器的执行时间, 看看...原创 2019-07-30 15:47:45 · 134 阅读 · 0 评论 -
JVM—类文件结构
1.Class类文件的结构任何一个Class文件都对应着唯一一个类或接口的定义信息.Class文件是一组以8位字节为单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符.根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型: 无符号数和表,后面的解析都要以这两种数据类型为基础.无符号...原创 2019-07-27 22:11:58 · 70 阅读 · 0 评论