![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 94
RachelHwang
鹏城百晓生
展开
-
JVM — JDK11垃圾回收器 ZGC
ZGC(The Z Garbage Collector)是 JDK 11 中推出的一款低延迟垃圾回收器,为实现以下几个目标而诞生的垃圾回收器,停顿时间不超过 10ms,停顿时间不会因堆变大而变长,支持 8MB~4TB 级别的堆(未来支持 16TB)ZGC 作为下一代垃圾回收器,性能非常优秀。ZGC 垃圾回收过程几乎全部是并发,实际 STW 停顿时间极短,不到 10ms。这得益于其采用的着色指针和读屏障技术。原创 2023-07-06 23:43:09 · 2612 阅读 · 0 评论 -
JVM — 虚拟机字节码执行引擎(八)
引用在 Java 虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型称为各种虚拟机执行引擎的统一外观(Facade)。在不同的虚拟机实现里面,执行引擎在执行 Java 代码的时候可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。但从外观上看起来,所有的 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。一、运行时栈帧栈帧(Stack原创 2020-07-14 01:18:50 · 147 阅读 · 0 评论 -
JVM — 虚拟机类加载机制(七)
1、类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。2、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接原创 2020-07-09 00:26:37 · 87 阅读 · 0 评论 -
JVM —JVM性能监控与故障处理工具(六)
1、jps:虚拟机进程状况工具列出当前机器上正在运行的虚拟机进程-p :仅仅显示VM 标示,不显示jar,class, main参数等信息.-m:输出主函数传入的参数. 下的hello 就是在执行程序时从命令行输入的参数-l: 输出应用程序主类完整package名称或jar完整名称.-v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数jps -v:进程打印jstat -gc 14096 250 20:打印进程gcjstat -gccause 14096 250原创 2020-07-07 23:38:33 · 106 阅读 · 0 评论 -
JVM — 内存分配与回收策略(五)
引言JVM中,目前使用的内配管理是分代方式,即把内存分成新生代、老生代和永久代。这里我们讲的分代管理机制是针对线程共享的内存区域,主要是堆,也包括方法区。Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存1.对象优先在Eden分配在大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC。如下代码中,尝试分配3个2MB大小和1个4MB大小的对象。在运行通过-Xms20M、-Xm原创 2020-07-07 21:37:22 · 434 阅读 · 0 评论 -
JVM — 虚拟机垃圾收集器(四)
垃圾收集器从上图可以看出堆内存的分为新生代、老年代和永久代。新生代又被进一步分为:Eden 区+Survior1 区+Survior2 区。值得注意的是,在 JDK 1.8中移除整个永久代,取而代之的是一个叫元空间(Metaspace)的区域(永久代使用的是JVM的堆内存空间,而元空间使用的是物理内存,直接受到本机的物理内存限制)。1、 新生代收集器1.1、Serial收集器Serial 收集器是最基本、发展历史最悠久的收集器,曾经(在JDK1.3.1之前)是虚拟机新生代收集的唯一选择,使用复制算原创 2020-07-03 23:02:07 · 196 阅读 · 0 评论 -
JVM — 虚拟机垃圾回收与垃圾收集算法(三)
1、Java虚拟机垃圾回收垃圾回收,或称垃圾收集(Garbage Collection,GC)是指自动管理回收不再被引用的内存数据。GC是垃圾收集的意思(Gabage Collection),Java提供的GC功能可以自动也只能自动地回收堆内存中不再使用的对象,释放资源(目的),Java语言没有提供释放已分配内存的显式操作方法(gc方法只是通知,不是立即执行)。对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引原创 2020-07-03 22:59:19 · 156 阅读 · 0 评论 -
JVM — JAVA堆中对象的创建(二)
一、对象的创建 在语言层面上,常仅仅是一个new关键字而已,而在虚拟机中,又是怎样的呢?类加载:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。内存分配:类加载通过后,接着就为新对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。 &原创 2020-07-01 22:59:28 · 178 阅读 · 0 评论 -
JVM — JVM运行时数据区域(一)
1. 运行时数据区域JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。如下图所示:1.1 程序计数器1.1.1 程序计数器 程序计数器是一个记录着当前线程所执行的字节码的行号指示器。JAVA代码编译后的字节码在未经过JIT(实时编译器)编译前,其执行方式是通过“字节码解释器”进行解释执行。原创 2020-07-01 01:19:05 · 177 阅读 · 0 评论