
JVM
文章平均质量分 94
夏倩倩
知足且上进,温柔且坚定
Keep learning and sharing
展开
-
Java内存区域与内存溢出异常
2.1 运行时数据区域Java虚拟机在执行Java程序的过程中把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。如下图所示: 2.1.1 程序计数器程序计数器是一块较小的内存空间,它是线程的私有内存,可以看作时当前线程所执行的字节码的行号指示器。在虚拟机的概念转载 2016-07-13 18:18:50 · 1474 阅读 · 0 评论 -
虚拟机性能监控与故障处理
一、JDK命令行工具简介所有的java开发人员都知道JDK的bin目录下存放着编译java需要的javac,以及运行java程序需要的java这两个命令工具,但是很多人并没有注意到,其实除了这两个工具,该目录下还有很多工具,这些工具其实为我们提供了很多方便且强大的功能,windows7系统64位jdk1.7/bin目录下部分截图:下面是命转载 2016-07-13 18:42:26 · 1852 阅读 · 0 评论 -
虚拟机类加载机制
JVM把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是类加载机制。1. 类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Us原创 2016-07-14 00:07:08 · 1561 阅读 · 0 评论 -
虚拟机字节码执行引擎
在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能有解释执行和编译执行两种选择,也可能两者兼备,甚至还可能包含几个不同级别的编译器执行引擎。但从外观上,所有的Java虚拟机的执行引起嫩都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。1. 运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储原创 2016-07-14 16:14:51 · 936 阅读 · 0 评论 -
Java内存模型与线程
1. Java内存模型Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致性的并发效果。在此之前,主流程序语言直接使用物理硬件(或者说是操作系统的内存模型),因此会由于不同平台上内存模型的差异,导致程序在一套平台上并发完全正常,而在另一套平台上并发访问却经常出错。1. 主内存与工作内存Java内存模型的主要目标是定义程原创 2016-07-14 20:43:28 · 2004 阅读 · 0 评论 -
垃圾收集器与内存分配策略
3.1 概述Java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会有JIT编译器进行一些优化,但在基于概念模型的讨论中,大体上可以认为是编译期可知的),因此者几个区域的内存分配和回收都具备确定性,在这几个区域内转载 2016-07-13 19:03:02 · 683 阅读 · 0 评论 -
垃圾收集器与内存分配
常用垃圾收集算法标记清除算法标记-清除-压缩标记-清除-复制Java分代收集算法Java内存分配策略优先在Eden上分配大对象直接进入老生代长期存活的对象进入老年代动态对象年龄判定空间分配担保Java垃圾收集器Serial 收集器 串行ParNew收集器 并行Parallel Scavenge收集器 并行Serial Old收集器 串行Par转载 2016-07-10 23:32:37 · 1020 阅读 · 0 评论