JVM虚拟机
文章平均质量分 77
七夜丶雪
听雪楼前听雪落,彼岸花开彼岸零
展开
-
深入理解Java虚拟机—JVM内存结构
1、概述 jvm内存分为线程共享区和线程独占区,线程独占区主要包括虚拟机栈、本地方法栈、程序计数器;线程共享区包括堆和方法区2、线程独占区 虚拟机栈 虚拟机栈描述的是java方法执行的动态内存模型,每个方法执行,都会创建一个栈帧,伴随着方法从创建到执行完成。用于存储局部变量表,操作数栈,动态链接,方法出口等。 本地方法栈 本地方法执行 程序计数器3、...原创 2018-03-12 21:21:00 · 174 阅读 · 0 评论 -
JVM Troubleshooting命令-jinfo
概述用来查看正在运行的Java应用程序的扩展参数,支持在运行时,修改部分参数。命令格式jinfo [ option ] pidjinfo [ option ] executable corejinfo [ option ] [ servier-id ] remote-hostname-or-IPoption : 命令行功能选项pid : 进程idexecutable...原创 2019-02-18 20:59:36 · 627 阅读 · 0 评论 -
JVM监控工具-jstat详解
概述监控JVM统计信息, 如gc信息, 类加载信息, JIT信息命令格式: jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]generalOption : jstat命令选项,如 -help或-optionsoutputOptions : 包含一个statOption的输出选项v...原创 2019-02-18 19:16:32 · 1259 阅读 · 0 评论 -
JVM监控工具-jps
概述用于查看操作系统上有哪些java进程, 类似于Linux系统下的ps命令, jps也支持查看远程主机上的java进程, 这个用处不大, 本文基于JDK8参数不加任何参数 : 显示进程id,以及main方法所在类名-q : 只显示进程id-m : 显示进程id,main方法所在类名, 以及传递给main方法的参数(如果有的话)-l : 展示类的完整路径或ja...原创 2019-02-17 15:05:35 · 607 阅读 · 0 评论 -
Java GC - HotSpot垃圾收集器详细介绍
HotSpot虚拟机垃圾收集器上图为JDK 1.7 Update14之后的HotSpot虚拟机包含的所有收集器, 如果两个收集器之中存在连线, 就说明它们可以搭配使用。Serial收集器单线程收集器执行GC时会暂停其他所有工作线程(会造成应用暂停)新生代收集器复制算法简单而高效(与其他收集器单线程相比)ParNew收集器Serial收集器的多线程版本新生代收集器采...原创 2018-09-27 09:51:54 · 202 阅读 · 0 评论 -
Java-垃圾回收(GC)详解
文章目录概述判断对象是否存活算法引用计数算法(Reference Counting)可达性分析算法(Reachability Analysis)引用类型回收方法区垃圾收集算法标记 - 清除算法复制算法标记 - 整理算法分代收集算法概述GC需要完成的3件事 :哪些内存需要回收什么时候回收如何回收判断对象是否存活算法引用计数算法(Reference Counting)给对象中添加...原创 2018-09-26 09:57:45 · 262 阅读 · 0 评论 -
Java与线程
线程的实现使用内核线程实现使用用户线程实现使用用户线程加轻量级进程混合实现Java线程的实现 JDK1.2之前是基于成为”绿色线程”(Green Threads)的用户线程实现的JDK1.2及之后, 线程模型替换为基于操作系统原生线程模型来实现Java线程调度 线程调度是指系统为线程分配使用权的过程, 主要调度方式有两种, 分别是协同线程调度(Cooperative ...原创 2018-09-16 11:20:07 · 158 阅读 · 0 评论 -
Java内存模型(JMM)
主内存与工作内存概述 Java内存模型的主要目标是定义程序中各个变量的访问规则, 即在虚拟机中将变量存储到内存和从内存中取出变量这样的低层细节. 变量 : 和Java编程中所说的变量有所区别, 它包括了实例字段, 静态字段和构成数组对象的元素,但不包括局部变量和方法参数,因为后者是线程私有的, 不会被共享.线程,主内存,工作内存交互关系从变量, 主内存,...原创 2018-09-16 11:18:31 · 491 阅读 · 0 评论 -
Java内存区域与内存溢出异常
运行时数据区域程序计数器可以看作当前线程所执行代码的行号指示器线程独占/私有每个线程都有各自的程序计数器执行java方法时记录字节码指令地址,执行native方法时为空(Undefined)虚拟机中唯一一个没有OutOfMemoryError错误的区域Java虚拟机栈线程独占/私有描述Java方法执行的内存模型局部变量表存放编译器可知的各种基本类型b...原创 2018-08-19 21:07:04 · 191 阅读 · 0 评论 -
JVM类加载(4)—加载器
定义:虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称之为“类加载器“。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器都有一个独立的类名称空间。简单来讲,比较两个类是否“相等”,必须是这两个类由同一个类加...原创 2017-05-07 21:01:00 · 97 阅读 · 0 评论 -
JVM类加载(3)—初始化
3、初始化在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量(静态变量)和其他资源,或者从另外一个角度表达:初始化过程是执行类构造器<client>()方法的过程。<client>()方法:<client>()方法是由编译器自动收集类中的所有类变量(静态变量)的赋值动作和静态语句块(static...原创 2017-05-07 20:54:00 · 170 阅读 · 0 评论 -
JVM类加载(2)—连接
2、连接连接就是将已经加载到内存中的类的二进制数据合并到Java虚拟机的运行时环境中去,加载阶段尚未完成,连接阶段可能已经开始。连接阶段包含验证、准备、解析过程。2.1、验证验证.class文件正确性,验证阶段大致会完成下面4个阶段的检验动作(1)、文件格式验证,这一阶段主要验证字节流是否符合Class文件的格式规范,并且能被当前版本的虚拟机处理。(2)、元数据验证,第二阶段是...原创 2017-05-07 20:46:00 · 111 阅读 · 0 评论 -
JVM类加载(1)—加载
1、加载:查找并加载类,将.class文件中的二进制数据读入到内存中,放在运行时数据区的方法内,然后在堆内创建一个java.lang.class对象用来封装类在方法区内的数据结构。并且向程序员提供了访问方法区内的数据结构的接口,程序中类的实例通过getClass()方法获取类在堆中的class对象,通过class对象可以完成对方法区中类数据结构的访问。class文件的加载方式:(1)、...原创 2017-05-07 20:40:00 · 155 阅读 · 0 评论 -
JVM工具-jstack
jstack打印线程堆栈信息, 支持支持本地java进程,core文件以及远程java进程命令格式jstack [ options ] pidjstack [ options ] executable corejstack [ options ] [ server-id@ ] remote-hostname-or-IPoptions : 功能选项pid : 要打印堆栈信息的Ja...原创 2019-02-20 08:02:37 · 1477 阅读 · 0 评论