杂记jvm
从原理聊JVM(二):从串行收集器到分区收集开创者G1
随着Java的进化过程,涌现出各种不同的垃圾回收器,从串行执行到并行执行,从高吞吐到低延迟,终极目标就是让开发人员专注于程序的代码书写而无需关注内存管理。 ......
编译及单步调试JVM
环境 腾讯云:4核8G ubuntu 20.04 STL 编译OpenJDK 8 下载jdk源码: git clone https://ghproxy.com/https://github.com/openjdk/jdk8u.git 安装编译的jdk sudo apt-get install ope ......
JVM调优笔记(一)--Nacos GC引发的服务批量下线问题
故障背景 线上批量发服务下线的告警邮件,偶发nacos连接超时。采用了spring boot admin(以下称sba)进行服务监控。 原因分析 因为sba服务是基于nacos对其它服务进行监控,所以遇到这个问题,第一怀疑对象是nacos发生问题,但不清楚具体是什么问题。由于服务过一段事件会恢复,所 ......
JDK,JRE,JVM之间的关系
JDK,JRE,JVM三者之间的关系 ==JDK = JRE + 开发工具集(例如javac编译工具等)== ==JRE = JVM + Java SE标准类库== ......
JVM垃圾回收机制之对象回收算法
在前面的文章中,介绍了JVM内存模型分为:堆区、虚拟机栈、方法区、本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享。 在Java中还有一个重要的机制:GC(垃圾收集器),堆是GC管理的主要区域,本文会带大家了解GC机制。 GC ......
从原理聊JVM(一):染色标记和垃圾回收算法
本篇介绍了JVM中垃圾回收器相关的基础知识,后续会深入介绍CMS、G1、ZGC等不同垃圾收集器的运作流程和原理,欢迎关注。 ......
JVM中的编译器
JVM中集成了两种编译器,Client Compiler和Server Compiler,它们的作用也不同。Client Compiler注重启动速度和局部的优化,Server Compiler则更加关注全局的优化,性能会更好,但由于会进行更多的全局分析,所以启动速度会变慢。两种编译器有着不同的应用 ......
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
问题描述 在Azure的Spring Cloud服务 (官名为:Spring Apps)中,在Metrics 页面中查看 App Memory Usage 和 jvm.memory.use,发现两则在下图中出现巨大差距。 App Memory Usage还是在逐渐上升 jvm.memory.use ......
一次线上JVM调优实践的优化过程
通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。 对于JVM垃圾回收,之前一直都是处于理论阶段,就知道新生代,老年代的晋升关系,这些知识仅够应付面试使用的。前一段时间,线上服务器的Full ......
JVM(Java内存模型)
CPU缓存模型: CPU缓存为了解决CPU处理速度和内存处理速度不对等的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。 指令重排序: 为了提升执行速度/性能,系统在执行代码的时候并不一定是按照你写的代码的顺序依次执行。 编译器优化重排 :编译器(包括 JVM、JIT 编译器等)在不改变单 ......
一天吃透JVM面试八股文
什么是JVM? JVM,全称Java Virtual Machine(Java虚拟机),是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机 ......
AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)
引子 最近不知怎么的,自从学了WebAPI(为什么是这个,而不是MVC,还不是因为MVC的Razor语法比较难学,生态不如现有的Vue等框架,webapi很好的结合了前端生态)以后,使用别人的组件一帆风顺,但是不知其意,突然很想自己实现一个基于的JWT认证服务,来好好了解一下这个内容。 起步 自从S ......
JVM vs JDK vs JRE
JVM(Java Virtue Machine)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。JVM ......
JVM最新面试题 有用地方不多 看1
JVM 面试题 一.Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个类的全限定名获取该类的二进制流。 • 将该二进制流中的静态存储结构转化为方法去运行时数据结 构。 • 在内存中生成该类的 Cla ......
深入理解 JVM --- Class 类文件结构
各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code) 是构成平台无关性的基石。 时至今日,商业企业和开源机构已经在Java语言之外发展出一大批运行在Java虚拟机之上的语言, 如Kotlin、Clojure、Groovy、JRuby、JPython、Sc ......
JVM的Xms和Xmx参数设置为相同值有什么好处?
转载自:https://cloud.tencent.com/developer/article/1695047 最近正在重新学习JVM的内存结构及相关优化内容,无意中看到IDEA的VM配置(安装时默认配置)中有如下的配置: # custom IntelliJ IDEA VM options -Xms ......
【JVM】JVM调优工具命令详解
1 前言 这节我们来实际的用一用JVM平时常用的调优命令,来实际体验回顾一下。这里我直接用的是我们生产环境的一个Pod里,来真实的带大家体验一下。 2 jps jps大家应该都知道吧,就是列出当前的java进程有哪些: 3 jmap 3.1 jmap ‐histo 此命令可以用来查看内存信息,实例个 ......
深入理解 JVM ------ 调优案例分析与实战
1、大内存硬件上的程序部署策略 网站失去响应是由垃圾收集停顿所导致的,在该系统软硬件条件下, HotSpot虚拟机是以服务端模式运行,默认使用的是吞吐量优先收集器,回收12GB的Java堆,一次Full GC的停顿时间就高达14秒(太大会导致回收停顿时间过长。再加上直接进入老年代,Full GC 次 ......
【JVM】JVM的配置参数汇总分类
Java HotSpot VM中 -XX: 的可配置参数列表进行描述;这些参数可以被松散的聚合成三类: 行为参数(Behavioral Options):用于改变jvm的一些基础行为; 性能调优(Performance Tuning):用于jvm的性能调优; 调试参数(Debugging Optio ......
jvm 调优参数
jvm 参数 | 参数 | 作用 | 建议 | | | | | | -Xms | 堆内存最小值 | 与 Xmx 相等,避免每次空间不足,动态扩容带来的影响 | | -Xmx | 堆内存最大值 | 与 Xms 相等,避免每次空间不足,动态扩容带来的影响 | | -Xmn | 新生代大小 | 过小会增加 ......
jvm 垃圾收集器基础
Serial 收集器 它是单线程的收集器,只会使用一个线程进行垃圾收集工作 它的优点是简单高效,对于单个 CPU 环境来说,由于没有线程交互的开销,因此拥有最高的单线程收集效率 ParNew 收集器 Serial 收集器的多线程版本 除了 Serial 收集器,只有它能与 CMS 收集器配合工作 默 ......
关键的Java JVM选项和参数
1. 关键的Java JVM选项和参数 让我们来看看在Java环境中可以配置的21个最重要的JVM选项和参数。 -Xms:将设置JVM的初始堆大小。 -Xmx:将设置JVM的最大堆大小。 -Xss:将设置每个线程的内部使用的线程堆栈的大小。 -XX:+UseCompressedOops:启用使用压缩 ......
jvm常见的分析工具
一、命令 jmap 内存分析: 1、jps #查到服务的进程 2、jmap -histo 进程号 #查看历史生产的实例 2.1、 jmap - histo pid | head -20 查看前20 个 3、jmap -histo:live 进程号 #查看当前存活的实例,执行过程中可能会触发一次ful ......
JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)
JVM内存分配 先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 程序计数器 栈 1. 虚拟机栈 2. 本地方法栈 Java堆 堆内存是各个线程共享的区域 方法区 它用于存储已经被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据。静态变量、常量在方法区 ......
jvm 内存结构
jvm 内存结构和 java 内存模型不是同一个东西 | 线程私有 | 线程共享 | | | | | 程序计数器 | 堆 | | 虚拟机栈 | 方法区 | | 本地方法区 | 堆外内存(Java7的永久代或JDK8的元空间、代码缓存) | 程序计数器 也叫 PC 寄存器,存储下一条程序行号(严格是机 ......
jvm 类加载
将字节码文件加载到 jvm,并创建对应的字节码对象,然后对其进行验证、初始化等操作 共 5 个阶段:加载、验证、准备、解析、初始化,这里只记录【加载】里的类加载器和双亲委派 加载的是字节码文件 通过类加载器 ClassLoader 把字节码文件在堆中生成代表这个 class 文件的 java.lan ......
jvm 字节码
编译 前端编译:依靠 jdk 的编译工具把 java 文件编译成 class 文件,javac 命令 后端编译:class 文件编译成机器指令 逐行读取 class 文件内同,并解释成机器指令 引入 jit 技术提高解释效率,比如某些类中共有的内容,这些内容解释次数过多就直接缓存起来 反编译:把 c ......