![](https://img-blog.csdnimg.cn/20210401145527852.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java虚拟机
文章平均质量分 71
java虚拟机
言午玉口才
众里寻他千百度。蓦然回首,那人却在,灯火阑珊处
展开
-
jvm调优-cpu飙升及响应慢
方案一适合前期项目压测环境,后端在后台捕获日志,不需要测试工程师提问题驱动。当然上了生产,遇到一些卡顿、响应慢、CPU高到问题也适用。方案二适合在方案一排查之后操作,毕竟JVM默认到一些参数配置已经够大多数项目适用。可以花些时间关注 堆内存、年轻代、老年代身上。调优涉及到的命令比较灵活,涉及的有:top 、jstack、ps、jmap、jps、jinfojstack命令讲解。原创 2022-08-23 10:49:14 · 1100 阅读 · 0 评论 -
JVM-常用配置参数
根据实际事情调整新生代和幸存代的大小官方推荐新生代占堆的3/8幸存代占新生代的1/10在OOM时,记得Dump出堆,确保可以排查现场问题。转载 2022-08-22 16:31:27 · 874 阅读 · 0 评论 -
JVM调优-配置参数
响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。原创 2022-08-22 16:24:21 · 603 阅读 · 0 评论 -
Java虚拟机之 jinfo 命令
一、概念 查看运行中jvm的全部参数,还可以设置部分参数二、语法 jinfo -help使用方式: jinfo 参数 pid参数说明: 参数 含义 -flag <name> to print the value of the named VM flag( 输出对应名称的参数) -flag [+|-]<name> to enabl...原创 2020-08-28 14:43:52 · 217 阅读 · 0 评论 -
java虚拟机之 jstack 命令
一、概念 用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以...原创 2020-08-22 22:45:51 · 364 阅读 · 0 评论 -
java虚拟机之 jps 命令
一、概念 jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。仅查找当前用户的Java进程,而不是当前系统中的所有进程。二、语法 jps [-q] [-mlvV] [<hostid>]参数说明: -q:仅输出VM标识符,不包括classname,jar name,arguments in main method; -m:输...原创 2020-08-22 22:40:55 · 437 阅读 · 0 评论 -
虚拟机类加载机制的简单阐述
一、类加载机制定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载周期:加载、验证、准备、解析、初始化、使用和卸载,其中验证、准备、解析3个部分统称为连接。以下是类从被加载到虚拟机内存的声明周期图:1、加载加载 是 类加载 过程的一个阶段,在加载阶段,虚拟机需要完成以下3件事情:1)、通...原创 2018-11-13 16:40:38 · 114 阅读 · 0 评论 -
类文件结构的简单描述
一、class类文件的结构1、常量池常量池:用于存放编译期生成的各种字面量和符号引用,这部分内容分将在类加载后进入方法区的运行时常量中存放。字面量:比较接近java语言层面的常量概念,如文本字符串、声明为final的常量值等。符号引用:属于编译原理方面的概念,包括了下面三类常量:A、类和接口的全限定名 B、字段的名称和描述符 C、方法的名称和描述符2、访问标志用于识别一...原创 2018-11-09 11:39:30 · 285 阅读 · 0 评论 -
运行时数据区域
Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。如下图所示:1、程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 特点: A、字节码解释器工作时需要通过改变计数器的值来选择下一条需要执行的字节码指令。 B、分支、循环、跳转、异常处理、线程恢复等基础功能都需要...原创 2018-11-06 17:45:05 · 214 阅读 · 0 评论 -
Java 溢出讲解(堆、栈、方法区)
一、内存溢出内存溢出:通常出现在某一块内存空间块耗尽的时候。OutOfMemory,简称OOM。1、堆溢出原因:大量对象占据了堆空间,而这些对象都持有强引用,导致无法回收,当对象大小之和大于由Xmx参数指定的堆空间大小时,溢出错误就自然而然地发生了。如:package com.krycai;import java.util.ArrayList;public class...原创 2018-10-30 17:40:19 · 904 阅读 · 0 评论 -
垃圾收集器
1、串行回收器指使用单线程进行垃圾回收的回收器。每次回收时,串行回收器只有一个工作线程,对于并行能力较弱的计算机来说,串行回收器的专注性和独立性往往有更好的性能表现。串行回收器可以在新生代和老年代使用,根据作用于不同的堆空间,分为新生代串行回收器和老年代串行回收器。1.1 新生代串行回收器特点:(1)、使用单线程进行垃圾回收;(2)、是独占式的垃圾回收;(3)、是一个成熟且...原创 2018-10-30 17:27:26 · 134 阅读 · 0 评论 -
垃圾回收算法
垃圾回收是Java体系最重要的组成部分之一,垃圾回收器的任务是识别和回收垃圾对象进行内存清理。以下是涉及算法的简单描述:一、垃圾回收算法1、引用计数法思路:对于一个对象A,只要有任何一个对象引用A,则A的引用计数器就加1,当引用失效时,引用计数器就减1.只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 ...原创 2018-10-30 17:02:55 · 178 阅读 · 0 评论 -
JVM内存区域划分
最近在学习JVM,将自己看到好的文章归为自己的笔记,学习之用。学习Java不可避免的要学习Java虚拟机,也就是JVM,Java虚拟机规范里面规定了程序运行期间会使用到的运行时数据区,这也是JVM的内存区域划分的模型,应该可以这么理解吧。这其中有一些是随着虚拟机的启动和退出而创建和销毁的,这些区域是线程共享的,另外有一些是跟各个线程绑定的,随着线程的开始和结束而创建和销毁,我们可以称这些区...转载 2018-10-09 13:46:00 · 106 阅读 · 0 评论