![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 68
蔚蓝珊瑚海
这个作者很懒,什么都没留下…
展开
-
JVM系列---内存模型概览
JVM内存区域java源文件通过javac编译成java字节码文件.class通过类加载器ClassLoader加载.class文件,将class文件内容放入内存中各个区域, 那么这各个区域,分别存放的是什么东西呢?程序计数器: 程序执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能。栈是运行时的单位,而堆是存储的单位。 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。堆中存的是实例对象。栈中存的是基本数据类型和原创 2021-08-25 17:29:06 · 118 阅读 · 0 评论 -
JVM系列---JDK工具
文章目录常用工具使用方式jpsjmpjinfojstackjvisualVM常用工具JDK常用的一些工具都在jdk安装包的bin目录下.常用的一些工具以及作用如下图所示使用方式jpsjps 列出当前系统中所有的Java进程jps -l 输出应用程序main class的完整package名或者应用程序的jar文件完整路径名jps -v 输出传递给JVM的参数,也就是jar包的运行参数.jmpjmap -heap pid 打印堆的摘要信息,包括GC算法、堆配置信息和各内存区原创 2021-08-19 15:03:49 · 135 阅读 · 0 评论 -
JVM系列---监控线程
文章目录(一) 应用场景线程五种状态(二) jvisualvm 监控1. 线程等待2. 线程死循环3. 线程活锁等待4. 线程死锁(三) jstack 监控介绍使用(一) 应用场景当系统陷入hung状态的时候(系统不输出报错,也不干活)看日志只能看到大致层面的报错,但是有些线程内部的问题,很多都无法体现在日志上,就需要使用jdk自带的工具去定位错误的位置有时候系统性能不是很好,需要监控一些内存,堆栈区的使用情况线程五种状态新建:new(时间很短)运行:runnable等待:waitti原创 2021-08-19 13:20:28 · 1248 阅读 · 0 评论 -
JVM---体系结构(一)
文章目录体系结构概览类加载器本地方法栈PC寄存器方法区栈堆栈+堆+方法区的交互关系体系结构概览注意:java源文件通过javac编译成java字节码文件.class.class文件打开,他的开头是cafe babe,所以虚拟机才能识别通过类加载器ClassLoader加载.class文件,将class文件放入内存中各个区域程序计数器、JAVA栈、本地方法栈是线程独有的,不受GC管理。栈中是没有垃圾的因为栈用完自动释放。堆里面垃圾最多、方法区中有少量垃圾。受GC管理所谓的JVM调优,就是针原创 2020-06-04 20:41:14 · 158 阅读 · 0 评论 -
JVM---体系结构(二)
文章目录HotSpot和堆对象生命周期和GC堆内存调优使用Jprofiler工具分析OOM原因HotSpot和堆堆Heap,一个JVM只有一个堆内存,堆内存的大小是可以调节的类加载器读取了类文件之后,一般会把什么放到堆中?类,方法,常量,变量,保存我们所有引用类型的真实对象。堆内存还要细分为三个区域新生区(伊甸园区)养老区永久区GC垃圾回收,主要是在伊甸园区和养老区假设内存满了,OOM,堆内存不够,java.lang.OutOfMemoryError: java heap原创 2020-06-04 22:53:14 · 160 阅读 · 0 评论 -
类的加载过程
文章目录Java内存分析类的加载过程类加载器类的初始化Java内存分析类的加载过程加载: 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,并通过反射生成一个代表这个类的Class对象。链接: 将java类的二进制代码合并到JVM的运行状态之中验证:确保加载的类信息符合jvm规范,没有安全方面的问题。准备:正式为类变量(static)分配内存并设置类变量默认初始值的,这些内存都将在方法区中进行分配。解析:虚拟机常量池内的符号引用(常量名)替换为直接原创 2020-05-16 15:06:54 · 242 阅读 · 0 评论 -
JVM常见问题
文章目录(一)JVM内存模型和分区,每个分区放什么?(二)堆里面的分区以及特点。(三)如何解决OOM问题?(四)堆内存调优(五)元空间调优(一)JVM内存模型和分区,每个分区放什么?Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念。java内存模型中分为主内存和工作内存,主内存可粗略认为是堆,工作内存认为是栈。主内存里面存储着所有变量,属于共享内存区域,所有线程都可以访问。每一个线程都私有一个工作内存,保存着主内存里面变量值的副本,线程对变量的操作都是在工作原创 2020-06-05 12:43:53 · 272 阅读 · 0 评论 -
GC垃圾回收
C语言中:malloc - freeC++中:new - deleteJava中: 自动内存回收,编程上简单,系统不容易出错。文章目录什么是垃圾?没有任何引用指向的一个对象或者多个对象(循环引用)如何定位垃圾引用计数算法(reference count)在一个对象上记录一个数字,记录到底有多少引用指向他,记录值为0的时候,这个对象就变成垃圾了。但是如果三个垃圾对象...原创 2020-05-27 22:48:40 · 117 阅读 · 0 评论 -
GC常见问题
文章目录(一)强引用、软引用、弱引用、虚引用(二)GC的算法有哪些?怎么使用(三)轻GC和重GC什么时候会发生?(一)强引用、软引用、弱引用、虚引用强引用(Strong Reference)最普遍的引用:Object obj = new Object();抛出OutOfMemoryError 终止程序也不会回收具有强引用的对象;通过将对象设置为null来弱化引用,让它被回收软引用(soft reference)对象处在有用但非必须的状态只有当内存空间不足时,GC会回收该引用的对原创 2020-06-05 12:52:05 · 736 阅读 · 0 评论