JVM
panzm_csdn
这个作者很懒,什么都没留下…
展开
-
jvm -XX参数
功能开关:参数默认值或限制说明参数默认值功能-XX:-AllowUserSignalHandlers限于Linux和Solaris,默认不启用允许为java进程安装信号处理器,信号处理参见类:sun.misc.Signal, sun.misc.SignalHandler-XX:+DisableExplicitGC默认启用禁止在运行期显式地调用System.gc()-XX:+FailOverToOl...转载 2018-06-11 11:14:35 · 674 阅读 · 0 评论 -
jvm运行机制
JVM启动流程1.java虚拟机启动的命令是通过java +xxx(类名,这个类中要有main方法)或者javaw启动的。2.执行命令后,系统第一步做的就是装载配置,会在当前路径中寻找jvm的config配置文件。3.找到jvm的config配置文件之后会去定位jvm.dll这个文件。这个文件就是java虚拟机的主要实现。4.当找到匹配当前版本的jvm.dll文件后,就会使用这个dll去初始化jv...转载 2018-06-10 10:35:30 · 539 阅读 · 0 评论 -
JVM简介
1. 什么是JVM? JVM是Java Virtual Machine的缩写,通常成为java虚拟机,作为Java可以进行一次编写,到处执行(Write once, run anywhere)的平台基础,由JVM帮工程师屏蔽了不同平台的差异性,提供了一致的编写接口。 谈到JVM,我们不得不讨论一下什么是VM(Virtual Machine),我们在工作中碰到的虚拟由VMWare, X...转载 2018-06-10 09:21:15 · 161 阅读 · 0 评论 -
栈分配与TLAB
在学习Java的过程中,一般认为new出来的对象都是被分配在堆上的,其实这个结论不完全正确,因为是大部分new出来的对象被分配在堆上,而不是全部。通过对Java对象分配的过程分析,可以知道有另外两个地方也是可以存放对象的。这两个地方分别栈 (涉及逃逸分析相关知识)和TLAB(Thread Local Allocation Buffer)。我们首先对这两者进行介绍,而后对Java对象分配过程进行介绍...转载 2018-06-17 10:55:44 · 330 阅读 · 0 评论 -
java虚拟机的基本结构
1 java虚拟机的基本结构如图:1)类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。2)java堆在虚拟机启动的时候建立,它是java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中。...转载 2018-06-13 10:24:40 · 252 阅读 · 0 评论 -
Class类文件结构
概述我们平时在DOS界面中往往需要运行先运行javac命令,这个命令的直接结果就是产生相应的class文件,然后基于这个class文件才可以真正运行程序得到结果。自然。这是Java虚拟机的功劳,那么是不是Java虚拟机只能编译.java的源文件呢?答案是否定的。时至今日,Java虚拟机已经实现了语言无关性的特点。而实现语言无关性的基础是虚拟机和字节码的存储格式,Java虚拟机已经不和包括Java语...转载 2018-06-12 17:02:15 · 138 阅读 · 0 评论 -
jvm 锁
1.1 偏向锁偏向锁是JDK 1.6 提出的一种锁优化方式。其核心思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就说,若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,无需进行相关的同步操作,从而节省了操作时间。如果在此之前有其他线程进行了锁请求,则锁退出偏向模式。在JVM中使用-XX:+UseBiasedLocking可以设置启用偏向锁。当锁对象处于偏向模式时,对象...转载 2018-06-12 15:40:58 · 114 阅读 · 0 评论 -
jvm性能监控工具
前言 工欲善其事必先利其器,性能优化和故障排查在我们大都数人眼里是件比较棘手的事情,一是需要具备一定的原理知识作为基础,二是需要掌握排查问题和解决问题的流程、方法。本文就将介绍利用性能监控工具,帮助开发者更快更准的找到问题产生的根源。本文分为三部分,第一部分将介绍在Linux环境下的常用监控工具,第二部分介绍Windows环境下的监控工具,第三部分将通过一个案例,介绍利用这些监控工具一步一步找出...转载 2018-06-12 10:51:31 · 271 阅读 · 0 评论 -
JVM之类装载器
class装载验证流程加载装载类的第一个阶段,取得类的二进制字节流,并转换为方法区的数据结构,在Java堆中生成对应的java.lang.Class对象。链接验证文件格式的验证,是否以0xCAFEBABE开头,版本号是否合理等。元数据验证,是否继承父类,是否有继承final类等。字节码验证(复杂),运行检查,栈数据类型和操作码数据参数吻合,跳转指令指定到合理的位置等。符号引用验证,常量池中描述类是...转载 2018-06-11 17:28:12 · 109 阅读 · 0 评论 -
GC参数
本文主要内容:堆的回顾串行收集器并行收集器CMS收集器 零、堆的回顾:新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上,最后清理掉Eden和刚才用过的...转载 2018-06-11 17:14:43 · 262 阅读 · 0 评论 -
GC算法和种类
本文主要内容:GC的概念GC算法 引用计数法(无法解决循环引用的问题,不被java采纳) 根搜索算法 现代虚拟机中的垃圾搜集算法: 标记-清除 复制算法(新生代) 标记-压缩(老年代) 分代收集Stop-The-World 一、GC的概念:GC:Garbage Collection 垃圾收集1960年 Lisp使用了GCJava中,...转载 2018-06-11 15:26:21 · 161 阅读 · 0 评论 -
jvm参数配置
一、堆大小设置JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3550m -Xmn2...转载 2018-06-11 11:12:38 · 248 阅读 · 0 评论