![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 73
偷偷学习被我发现
记录个人点滴
展开
-
使用MAT进行内存分析,并找到OOM问题
在处理一次现场问题时,发现服务还在运行,但是出现假死情况,后通过分析GC日志以及使用MAT分析确定问题是内存溢出OutOfMemery(OOM);这里只记录MAT分析学习过程,最近工作忙,补记录。GC日志分析首先,如果明确了是哪个服务出现了问题,就可以使用ps -aux | grep 服务名jps 进程号;如果不能明确,可使用top命令查看cup占用率,来分析是哪个服务内存出了问题;然后在出现问题时,对堆及内存对象进行快照,可以导出快照dump对它进行分析;原创 2023-03-03 12:31:10 · 1048 阅读 · 1 评论 -
GC日志分析
在处理一次现场问题时,发现服务还在运行,但是出现假死情况,后通过分析GC日志以及使用MAT分析确定问题是内存溢出OutOfMemery(OOM);这里只记录GC分析学习过程日志打印时间 日期格式20.878gc发生时,Java虚拟机启动以来经过的秒数发生了一次垃圾回收,这是一次FULL GC。它不区分新生代GC还是老年代GC括号里的内容是GC发生的原因,这里的Metadata gC Threshold的原因是Metaspace区不够用了。原创 2023-02-07 20:15:50 · 1225 阅读 · 0 评论 -
在JVM 中进程与线程关系、介绍线程:程序计数器、本地方法栈、虚拟机栈
在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的,native是有实现体的,只不过这些实现体是非java的。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main函数所在的线程就是这个进程中的一个线程,也称。多线程同时执行,相互抢夺CPU,Thread类是java.lang包下的一个常用类,每一个Thread类的对象,就代表一个处于某种状态的线程.得多,也正因为如此,原创 2022-11-19 02:27:16 · 455 阅读 · 0 评论 -
热部署和热加载的区别
说实话,本来这篇文章是不打算写的,但是因为今天听到开发的同事在说在开发时不用重启项目采用热部署等等…啥的,因为之前我提到过开发时提升效率多数使用的是热加载,我知道热加载使用过多,存在内存溢出的隐患,但是我觉得这也许是分不清热部署和热加载的区别,所以也许有朝一日我又给忘了(可耻),所以记录的,如果我的理解和记录有误,或者我压根就没说对,请千万指正。热部署:热部署在服务器运行时重新部署项目;热部署直接重新加载整个应用;热部署更多的是在生产环境使用;如果你是使用tomcat或者其他的服务器部署项目时,往原创 2020-05-20 02:13:54 · 584 阅读 · 0 评论 -
设置idea实现热部署__使用spring-boot-devtools
加入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.0.4.RELEASE</version></dependency>设置idea:快捷键:shift+alt+ctrl+/重启idea就生原创 2020-05-18 19:17:32 · 612 阅读 · 0 评论 -
记录读书一:JAVA的发展史
JAVA的发展史Java发展的时间表。 (版本号 名称 中文名 发布日期)JDK 1.1.4 Sparkler 宝石 1997-09-12 JDK 1.1.5 Pumpkin 南瓜 1997-12-13 JDK 1.1.6 Abigail 阿比盖尔–女子名 1998-04-24 JDK 1.1.7 Brutus 布鲁图–古罗马政治家和将军 1998-09-28 JDK 1.1.8 Chelsea 切尔西–城市名 1999-原创 2020-05-12 13:11:25 · 147 阅读 · 0 评论 -
String字符串的长度
最近回顾了一下String的长度,记录一下, 万一下次忘了方便再次记忆!Java中的String的长度要要分两个阶段去思考:1、编译期:在JDK1.8中,看过String的源码的应该知道,根据public String(char value[], int offset, int count)的定义,count是int类型的,所以,char value[]中最多可以保存Integer.MAX_VALUE个,即2147483647字符。但是实际上却不一样,String s = “”;中,最多可以有655原创 2020-05-12 12:54:21 · 3471 阅读 · 0 评论 -
JVM内存结构和常量池
##1.虚拟机的构成##虚拟结主要由运行时数据区、执行引擎、类加载器三者构成,我们所说的JVM内存模型指的就是运行时数据区。##2.运行时数据区组成和各个区域的作用##运行时数据区可以分为线程共享和线程不共享两部分,其中堆内存和方法区线程共享,本地方法栈、虚拟机栈、程序计数器线程不共享。##2.1.程序计数器##程序计数器(Program Counter Register),也有称作...原创 2019-07-15 15:53:12 · 508 阅读 · 1 评论 -
JVM内存结构之堆、栈、方法区以及直接内存、堆和栈区别
JVM内存结构之堆、栈、方法区以及直接内存、堆和栈区别一、 理解JVM中堆与栈以及方法区堆(heap):FIFO(队列优先,先进先出);二级缓存;*JVM中只有一个堆区被所有线程所共享;对象和数组储存在里面;调用对象速度较慢;生命周期由虚拟机JVM的垃圾回收机制GC制定;由JVM动态分配空间;堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。...原创 2019-07-13 22:35:35 · 1959 阅读 · 1 评论 -
Java虚拟机启动、加载类过程分析&&双亲委派模式&&双亲加载模型的逻辑和底层代码
一、Java虚拟机启动、加载类过程分析public class Main{ public static void main(String[] args) { System.out.println("Hello,World!"); ClassLoader loader = P11Util.class.getClassLoader(); ...原创 2019-12-22 00:55:20 · 244 阅读 · 1 评论