
JVM
tgn123456
这个作者很懒,什么都没留下…
展开
-
CMS与G1 三色标记算法
承上启下jdk8默认回收器ps+po,jdk9默认就是G1了。但是CMS是并行回收的开始CMSCMS :ConcurrentMarkSweep 老年代 并发的,垃圾回收和应用程序同时运行,降低STW的时间(200MS)CMS有一些问题,所以没有任何版本默认是CMS的,只能手工指定。CMS是MarkSweep,必然会导致碎片,当碎片到一定程度,CMS老年代分配对象分配不下时,使用serialold进行老年代串行回收。会产生浮动垃圾解决方案:降低触发CMS的阈值,保持老年代有足够的空间-原创 2020-05-12 23:29:01 · 4173 阅读 · 4 评论 -
阿里黑科技-在线排查工具arthas
arthas安装及使用官网https://alibaba.github.io/arthas/install-detail.htmlhttps://github.com/alibaba/arthas/blob/master/README_CN.mdjava -jar arthas-boot.jar启动可以看到日志输出的java进程,输入进程序号回车,arthas会attach到java进程中常用命令jvm比jinfo强大的多,可以看到年代垃圾回收算法详情,线程数,内存情况等等信息原创 2020-05-12 10:38:47 · 1983 阅读 · 0 评论 -
jvm cpu memory告警
1、top命令观察,内存不断增长,CPU占用率居高不下,获取进程号PID2、top -Hp 观察进程中的线程,哪个线程CPU和内存占比高,获取线程号PID3、jstack -l 线程号PID(需要将10进制PID,转成16进制)原创 2020-05-11 15:07:12 · 490 阅读 · 0 评论 -
JVM调优
Zing 商业收费JVM,就一个参数,不用调优了。。PS+PO调优。。。建设中原创 2020-05-10 13:37:57 · 196 阅读 · 0 评论 -
JVM指令小全
JVM参数-开头的,都是标准参数,任何版本都可以用-X开头的,是非标参数-Xmn等查看所有JVM参数java -XX:+PrintFlagsFinal -version | (grep NewSize/NewRatio)原创 2020-05-09 20:42:00 · 169 阅读 · 0 评论 -
GC基础理论知识
Java GCjava垃圾回收器自动回收,没有任何引用链接的就是垃圾如何确定垃圾引用计数法:记录引用计数,为0就是垃圾,但是无法解决循环引用问题根可达算法:没有同GC roots链接的,都是垃圾垃圾清除算法Mark-Sweep 标记清除,算法相对简单,两遍扫描(扫描一遍存活的,再扫描一遍未存活的)效率偏低,容易产生碎片,所以不适合eden区。存活对象比较多的情况下效率较高Copying 拷贝,分为两块内存,将有用的拷贝到另一块内存。空间浪费,移动复制对象,需要调整对对象的引用。适用于对原创 2020-05-09 14:02:56 · 558 阅读 · 0 评论 -
Java运行时数据区的常用指令集
JVM是基于栈的指令集栈的指令集:压栈出栈寄存器指令集:有存储功能汇编语言是基于寄存器的指令集,但是JVM hotspot中的栈帧的局部变量表(Local variable table)类似于寄存器1、int i=8;{bitpush 8 : 将8压栈 (超过128为stpush)istore_1: 弹栈(将8取出)并存放到局部变量表1位置上}2、i=i++; (++i,iinc将会比iload_1先执行,所以输出为9){iload_1 : 将局部变量表中1的位置的数据,压栈(将原创 2020-05-08 22:58:24 · 282 阅读 · 0 评论 -
Java运行时数据区
Program Counter 程序计数器存放指令位置虚拟机的运行,类似于这样的循环:while( not end ) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC ++;}Heap所有虚拟机内的线程共享Direct MemoryJVM可以直接访问的内核空间的内存 (OS 管理的内存)NIO , 提高效率,实现zero copyJVM Sta...原创 2020-05-07 23:16:45 · 285 阅读 · 0 评论 -
对象的内存布局
对象的创建过程对象在内存中的存储布局普通对象对象头:markword 8ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节实例数据引用类型:-XX:+UseCompressedOops 为4字节 不开启为8字节Oops Ordinary Object PointersPadding对齐,8的倍数数组...原创 2020-05-06 22:08:10 · 266 阅读 · 0 评论 -
JMM-Java内存模型
Java内存模型共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵...原创 2020-05-06 13:53:51 · 214 阅读 · 0 评论 -
Class加载过程
类加载过程1.loading 加载 (双亲委派,处于安全考虑)2.linking 链接1.Verification 验证 2.Preparation 准备 3.Resolution 解析3.Initializing初始化类加载器1、(当获取classloader是null时,代表获取到的时顶级类加载器,Bootstrap类加载器)2、双亲委派机制,其实指...原创 2020-05-06 12:11:37 · 383 阅读 · 0 评论 -
Jvm-Class文件格式
#1常量池1号位置存储常量池中的常量数量constant_pool表:constant_pool_count-1、access_flags:通过super按位运算出类的类型fields:属性类型methods:方法attribute:通过方法表,执行jvm指令(JVM的汇编语言)观察ByteCode方法javap -v classpath,BinEd,JclasslibJClas...原创 2020-05-05 19:59:35 · 156 阅读 · 0 评论 -
JVM-Java Virtual Machine
Java从编码到执行JVM与class文件格式JVM与Java无关,任何语言只要能够编译Class,都可以在JVM中执行JVM是虚构出来的一台计算机-字节码指令集-内存管理:栈,堆,方法区等常见JVM实现Hotspot:oracle官方(java -version)8以上版本收费。使用openJDK包含HotSpot开源版本Jrockit:BEA,曾经号称世界上最快的JVM,被O...原创 2020-05-04 23:54:05 · 279 阅读 · 0 评论