JVM
文章平均质量分 92
javaer工具人
学习得有输出
展开
-
JVM 性能调优实战(4)
实战:代码缓存区(Code Cache)与代码缓存区满代码缓存区 - 存储编译后的代码属性作用默认值-XX:lnitialCodeCacheSize设置代码缓存区的初始大小,以 java -XX: +PrintFlagsFinal 1 grep InitialCodeCacheSize结果为准不同操作系统、不同编译器的值不同-XX:ReservedCodeCacheSize设置代码缓存区的最大大小,以java -XX: +PrintFlagsfinal 1 grep R原创 2021-03-02 16:51:01 · 189 阅读 · 0 评论 -
JVM 性能调优实战(3)
实战 - CPU过高问题定位top + jstack首先使用 top 命令PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP61603 idea 174.5 03:07.44 64/2 2 471 1662M+ 5732K 207M- 6160362085 java 67.8 00:07.23 19/1 1 79 50M原创 2021-03-02 14:45:20 · 696 阅读 · 0 评论 -
JVM 性能调优实战(2)
实战: JVM日志实战JDK 8 JVM日志统一日志管理Xlog实战Xlog常用JDK 8垃圾收集相关参数G1PrintHeapRegions、GCLogFileSize、 NumberOfGCLogFiles、PrintAdaptiveSizePolicy、 PrintGC.、PrintGCApplicationConcurrentTime、PrintGCApplicationStoppedTime、PrintGCCause、PrintGCDateStamps、PrintGCDetails原创 2021-03-02 09:32:12 · 295 阅读 · 0 评论 -
JVM 性能调优实战(1)
前言各种实战,积累经验将理论与工具融会贯通额外的理论增补额外的一些工具预热:JVM参数选项JVM参数选项繁多, 格式不一-开头如 :java -version-X开头如 :java -Xmx50m-XX开头…如 :java -XX:+UseG1GCJVM选项的分类与方式1. 标准选项(Standard Options for Java)1.1 作用用于执行常见操作,例如检查JRE版本,设置类路径,启用详细输出等,各种虚拟机的实现都会去支持标准参数1.2 查看支持的参原创 2021-03-01 21:50:35 · 906 阅读 · 0 评论 -
JVM垃圾收集器
垃圾收集算法:为实现垃圾回收提供理论支持垃圾收集器:利用垃圾收集算法,实现垃圾回收的实践落地术语术语-Stop The World简写为STW ,也叫全局停顿,Java代码停止运行,native代码继续运行,但不能与JVM进行交互原因:多半由于垃圾回收导致;也可能由Dump线程、死锁检查、Dump堆等导致危害:服务停止、没有响应;主从切换、危害生产环境术语-并行收集Vs并发收集并行收集:指多个垃圾收集线程并行工作,但是收集的过程中用户线程(你的业务线程)还是处于等待状态的并发收集:指用户原创 2021-02-26 15:01:29 · 173 阅读 · 0 评论 -
JVM 垃圾回收
垃圾回收先抛出 3 个问题什么场景下该使用什么垃圾回收策略?垃圾回收发生在哪些区域?对象在什么时候能够被回收?什么场景下该使用什么垃圾回收策略?在对内存要求苛刻的场景,想办法提高对象的回收效率,多回收掉一些对象,腾出更多内存在CPU使用率高的情况下,降低高并发时垃圾回收的频率,让出更多的 CPU去执行你的业务而不是垃圾回收垃圾回收发生在哪些区域?虚拟机栈,本地方法栈,程序计数器,这三个区域都是线程独占的,随着线程的创建而创建,销毁而销毁,所以这三块区域是不需要考虑垃圾回收的堆和方法原创 2021-02-25 17:59:31 · 129 阅读 · 0 评论 -
JVM编译器优化机制
编译器优化机制字节码是如何运行的?解释执行:由解释器一行一行翻译执行编译执行:把字节码编译成机器码,直接执行机器码解释vs编译解释执行优势在于没有编译的等待时间性能相对差些编译执行运行效率会高很多, 一般认为比解释执行快一个数量级带来了额外的开销怎么查看运行模式呢? ~ java -versionjava version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)Java Ho原创 2021-02-25 14:19:37 · 326 阅读 · 2 评论 -
JVM 内存结构和加载过程
一、JVM内存结构其中堆和方法区是线程共享的,虚拟机栈,程序计数器,本地方法栈是线程隔离的堆:JVM 最大的内存空间,就大部分对象都是存在堆内存中的,堆内存又做了细分,分为了新生代和老年代还有一个 jdk8之前是永久代,jdk8 及其以后都是元空间,元空间并不是堆内存的一部分,而是本地内存。From Survivor 和 to Survivor 是存活区,垃圾回收使用复制算法的时候会用到虚拟机栈:是线程独享的,当创建线程的时候就会创建虚拟机栈,虚拟机栈由栈帧组成,每一次的方法调用都会创建栈帧,每原创 2021-02-24 17:17:59 · 175 阅读 · 0 评论