jvm系列
likaihai918
最近喜欢上了一种学习思想,叫做以教为学,深以为然,下去将会一直贯彻这种思想
展开
-
java虚拟机系列(三)- 垃圾收集器与内存回收策略
java虚拟机系列(三)- 垃圾收集器与内存回收策略 一、HotSpot算法实现 1.1 枚举根节点 可达性分析从GC Roots节点查找引用链期间(枚举根节点),不允许出现分析过程中对象引用关系还在不断变化的情况,所以要让整个执行系统这时好像要停顿在某个时间点上。这就要求在GC在工作时必须停顿所有的java工作线程(Stop the World)。 目前主流的java虚拟机使用的都是准确式GC,...原创 2019-05-15 15:57:02 · 292 阅读 · 0 评论 -
java虚拟机系列(一)- 内存区域详解
java虚拟机系列(一)- 内存区域详解java虚拟机系列(一)- 内存区域详解一、运行时数据区1.1程序计数器1.2 java虚拟机栈1.3 本地方法栈1.4 java堆1.5 方法区1.6 运行时常量池1.7 直接内存二、hotspot虚拟机对象探秘2.1 对象的创建2.2 对象的内存布局2.3 对象的访问定位三、 OutOfMemoryError异常3.1 堆溢出3.2 虚拟机栈和本地方法栈...原创 2019-05-13 14:06:59 · 556 阅读 · 0 评论 -
java虚拟机系列(二)- 对象存活判定与垃圾收集算法
java虚拟机系列(二)- 对象存活判定与垃圾收集算法 一、概述 通过前一篇文章我们已经知道,java运行时数据区的程序计数器、虚拟机栈、本地方法栈这三个区域随着线程而生而灭,虚拟机栈中的栈帧应该分配多少内存在类结构确定下来就已经已知了,因此这几个区域的线程分配和回收都具有确定性。 而java堆和方法区不一样,我们只有在程序运行期间才能知道创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器...原创 2019-05-13 14:22:31 · 550 阅读 · 0 评论 -
java虚拟机系列(四)- java虚拟机性能监控与调优
java虚拟机系列(四)- java虚拟机性能监控与调优 java工具包及其命令 一、jps 显示系统中正在运行的虚拟机进程 命令格式: jps [options] [hostid] 常用参数 -q:只输出进程id -l:输出全类名,如果是jar包输出jar包地址 -m:输出main方法传入的参数 -v:输出虚拟机进程启动参数 二、jstat 监控jvm虚拟机内存使用情况的工具。 可以用...原创 2019-09-30 09:39:40 · 171 阅读 · 0 评论 -
java虚拟机系列(五)- 类文件的结构
java虚拟机系列(五)- 类文件的结构 一、无关性基石 1.1 平台无关性 “与平台无关”的理想最终实现在操作系统层面上:Sun公司以及其它虚拟机提供商发布了许多运行在不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码(Class字节码文件),从而实现程序的“一次编写,到处运行”。 1.2 语言无关性 java发展之初,设计者就考虑并实现让其他语言运行在java虚拟机上的可能,...原创 2019-09-30 09:47:00 · 102 阅读 · 0 评论 -
java虚拟机系列(六)- 虚拟机类加载机制
文章目录java虚拟机系列(六)- 虚拟机类加载机制一、概述二、类加载时机三、类的加载过程3.1 加载3.2 连接3.2.1验证3.2.2 准备3.2.3 解析3.3 初始化四、类加载器4.1 类与类加载器4.1.1 从虚拟机角度看类加载器4.1.2 从java开发人员角度看类加载器4.2 双亲委派模型 java虚拟机系列(六)- 虚拟机类加载机制 一、概述 一个Java文件从编码完成到最终执行,...原创 2019-09-30 10:17:31 · 407 阅读 · 0 评论 -
java虚拟机系列(十)- java内存模型与线程
java虚拟机系列(十)- java内存模型与线程 一、概述 多任务处理在现代计算机操作系统中几乎已经是一项必备的功能,是指让计算机同时去做几件事情,充分“压榨”处理器的运算能力,将花费在磁盘I/O、网络通信或者数据库访问的时间(阻塞等待的时间)解放出来。 除了充分利用计算机处理器的能力外,一个服务端同时对多个客户端提供服务则是另一个更加具体的并发应用场景。而服务端是java语言最擅长的领域之一。...原创 2019-09-30 11:00:32 · 153 阅读 · 0 评论 -
java虚拟机系列(十一)线程安全与锁优化
java虚拟机系列(十一)线程安全与锁优化 一、线程安全 《java Concurrency In Practive》的作者Brian Goetz对“线程安全”有一个比较恰当的定义:“当多个线程访问同一个对象,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。 如果一个对象...原创 2019-09-30 11:05:55 · 196 阅读 · 0 评论