JVisualVM监控JVM-外网服务器

环境说明: a:阿里云服务器Centos8.2 b:JDK1.8 #1:增加JMV运行参数 java -jar 启动时添加一下参数: -Djava.rmi.server.hostname=外网IP地址 -Dcom.sun.management.jmxremote.port=jmx端口 -Dcom.s ... »

【死磕JVM】JVM快速入门之前戏篇

简介 Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台。javac编译好后的class文件,在Windows、Linux、Mac等系统上,只要该系统安装对应的Java虚拟机,class文件都可以运行。达到 ”一次编译,到处运行” 的效果。 什么是JVM JV ... »

学习笔记——JVM性能调优之 jmap

jmap(JVM Memory Map)命令可生成head dump文件,还可查询finalize执行队列、Java堆和永久代的详细信息。 通过配置启动参数:-XX:+HeapDumpOnOutOfMemoryError参数可以让JVM出现OOM时自动生成dump文件。 ... »

后端编译与优化

本书部分摘自《深入理解 Java 虚拟机第三版》 概述 前面讲过前端编译是将 Java 源代码编译成 Class 字节码,那么后端编译就对应把 Class 文件转换成与本地机器相关的二进制机器码的过程。然后 JVM 把每一条要执行的字节码交给解释器,翻译成对应的机器码,由解释器执行,Java 程序就 ... »

前端编译与优化

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 前端编译器(也叫编译器的前端)中的前端是指把 Java 文件转变为 Class 字节码文件的过程,顾名思义,前端编译器就是完成这一部分编译工作的。 前端编译器对代码的运行效率几乎没有任何优化措施可言,Java 虚拟机设计团队选择把对性能的优化全 ... »

JVM垃圾收集算法

分代收集理论 垃圾收集区域 部分收集(Partial GC): 新生代收集(Minor GC/Young GC): 老年代收集(Major GC/Old GC): 混合收集(Mixed GC): 整堆收集(Full GC):收集整个Java堆和方法区的垃圾收集 标记-清除算法 最早出现也是最基础的垃 ... »

JVM(八)执行引擎相关内容

一:两种解释器 JAVA字节码解释器: java字节码 》c++代码==》硬编码。 首先.java文件编译成字节码,遍历每行的字节码指令,因为每个字节码指令的含义都是固定的所以可以根据每行字节码指令来转成c++代码调用,最后转成硬编码(机器码)来执行。 模板解释器: 由java字节码==》硬编码。可 ... »

JVM有哪些垃圾回收器

JVM 的垃圾回收器 经典垃圾收集器 如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。 这些经典的收集器尽管已经算不上是最先进的技术,但他们曾在实践中千锤百炼,足够成熟。 HotSpot虚拟机的垃圾收集器 图中展示了其中作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它 ... »

Java 虚拟机类加载机制

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程被称作虚拟机的类加载机制 与那些在编译时需要进行连接的语言不同,在 Java 语言里面,类 ... »

JVM 字节码指令

本文部分摘自《深入理解 Java 虚拟机》 简介 Java 虚拟机的指令由操作码 + 操作数组成,其中操作码是代表某种特定操作含义的数字,长度为一个字节,而操作数就是此操作所需的一个或多个参数。由于 Java 虚拟机采用面向操作数栈而非寄存器的架构,所以大多数指令都不包括操作数,只有一个操作码 既然 ... »

HotSpot学习(二):虚拟机的启动过程源码解析

1. 前言 上文介绍了HotSpot编译和调试的方法,而这篇文章将迈出正式调试的第一步——调试HotSpot的启动过程。 学习启动过程可以帮助我们了解程序的入口,并对虚拟机的运行有个整体的把握,方便日后深入学习具体的一些模块。 2. 整体感知启动过程 整体的感知启动过程可以在启动时添加_JAVA_L ... »

Class 类文件结构

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 我们知道,Java 具有跨平台性,其实现基础就是虚拟机和字节码存储格式。Java 虚拟机不与 Java 语言绑定,只与 Class 文件所关联。Java 虚拟机作为一个通用的、与机器无关的执行平台,任何语言都可以将 Java 虚拟机作为它们的运 ... »

JVM 常用命令行工具

本文部分摘自《深入理解 Java 虚拟机第三版》 基础故障处理工具 Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子 本文主要介绍的是用于监视虚拟机运行状态和进行故 ... »

CMS、G1收集器

CMS、G1收集器 1、CMS收集器 CMS(Concurrent Mark Sweep) 收集器是一种以获取最短回收停顿时间为目标的收集器。优点是并发收集、低停顿。目前很大一部分的Java 应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带 ... »

JVM 低延迟垃圾收集器 Shenandoah 和 ZGC

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 衡量垃圾收集器的三项指标分别是:内存占用、吞吐量和延迟。这三者共同构成一个“不可能三角”,即一款优秀的收集器最多可以同时达成其中两项 随着硬件性能的提升,对内存占用和吞吐量也有所助益,但对延迟却并非如此。比如内存扩大了,对延迟反而会带来负面效果 ... »

JVM笔记【1】-- 运行时数据区

(一)java内存区域管理 C/C++每一个new操作都需要自己去delete/free,而java里面有虚拟机自动管理内存,不容易出现内存泄漏或者溢出的问题,但是不容易出现不代表不出现,了解虚拟机怎么使用和管理内存是十分重要的是,对程序优化或者问题排查有帮助。 运行时区域主要分为: 线程私有: 程 ... »

JVM 经典垃圾收集器 —— CMS 收集器

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。由于大部分 Java 应用主要集中在互联网网站以及基于浏览器的 B/S 系统的服务端,这类应用通常会较为关注服务的响应速度,希望系统的停顿时间 ... »

JVM 经典垃圾收集器

本文部分摘自《深入理解 Java 虚拟机第三版》 概述 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的实践者。Java 虚拟机规范中对垃圾收集器的实现做出规定,因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器各有不同。所谓经典就是在 JDK7 Update 4 以后,JDK11 发 ... »

JVM 类加载

三层类加载器及父子关系建立 1.1 三层类加载器 BootStrapClassLoader: 查看加载路劲方法: URL[] urLs = sun.misc.Launcher.getBootstrapClassPath().getURLs(); for (URL urL : urLs) { Syst ... »