
JVM
文章平均质量分 88
JVM
静若繁花_jingjing
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM_JMM
JMM是一套规范,它定义了Java程序中各种变量(线程共享变量)的访问方式,以及在并发环境下如何保证数据的可见性有序性和原子性。关键点:它不是物理内存模型:JMM并不真实存在,它只是一个抽象的规则和约定,描述的是线程和主内存之间的抽象关系。它是一种规范:它规定了JVM如何与计算机内存协同工作,特别是在多线程环境下。它的目标:屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各种平台下都能达到一致的内存访问效果,从而保证并发程序的正确性。你可以把它想象成Java并发世界的“宪法”原创 2025-08-29 17:44:40 · 969 阅读 · 0 评论 -
JVM总结
原创 2025-08-26 11:49:52 · 390 阅读 · 0 评论 -
JVM常量池
二级制的Class文件中的。。字面量:指由字母、数字等构成的字符串或者数值常量。字面量只可能出现在等号右边。:主要包括了以下三类常量的引用类和接口的全限定名 :类常量池里的 Lcom/tuling/jvm/Math 是类的全限定名, 是符号引用字段的名称和描述符 :a、b就是字段名,是符号引用方法的名称和描述:main和compute是方法名称,()是一种UTF8格式的描述符,这些都是符号引用这些常量池现在是静态信息,只有到运行时被加载到JVM内存后,这些符号才有对应的内存地址信息。原创 2025-08-19 14:28:26 · 893 阅读 · 0 评论 -
JVM内存模型
开发JDK为Java应用程序提供了基本的开发和运行环境,是整个Java的核心,包括:1.Java运行环境(JRE)2.,如:java.lang、java.io、java.awt、java.swing等类3.Java开发工具,如:javac.exe(编译工具)、java.exe(运行工具)、javadoc.exe(生成JavaDoc文档的工具)和jar.exe(打包工具)等, 与JDK安装目录中的文件夹对应关系运行。原创 2025-08-11 23:10:42 · 652 阅读 · 0 评论 -
JVM字节码文件结构
class文件是二进制文件,这里要介绍的是这个二级制文件的结构。思考:一个java文件编译成class文件,如果要描述一个java文件,需要哪些信息呢?原创 2025-08-14 09:47:33 · 628 阅读 · 0 评论 -
全面理解JVM虚拟机
JVM(Java虚拟机)有很多的版本,现在最主流的是Oracle官方的HotSpot虚拟机。JVM定义了JVM规范,只要是能满足JVM规范的class文件,都可以丢到JVM中执行。原创 2025-08-08 23:51:35 · 868 阅读 · 0 评论 -
JVM执行引擎深入理解
java程序的编译分为两个阶段:前端编译:是由编译器来做编译,是在JVM之外。前端编译一般不会做很多性能的优化,否则编译器的实现就会复杂。执行引擎要做的就是,根据操作系统的不同,将字节码指令转换成相应机器能执行的机器指令。解释执行:一条字节码指令翻译成一条机器指令,无脑翻译。早期JVM执行引擎就是这样做的。缺点:上层语言经过两层转换才能执行,相比C、C++效率低,执行速度慢。编译执行:JVM维护⼀个缓存CodeCache,将那些字节码指令,提前编译出来,放到缓存⾥。到执⾏的时候,直接从缓存中查出来就好了。原创 2025-08-15 16:32:27 · 942 阅读 · 0 评论 -
JVM垃圾收集器G1&ZGC
G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.原创 2025-08-18 12:17:50 · 832 阅读 · 0 评论 -
JVM对象创建和内存分配机制
通过逃逸分析确定该对象不会被外部访问,并且对象可以被进一步分解时,JVM不会创建该对象,而是将该对象成员变量 分解若干个被这个方法使用的成员变量所代替,这些代替的成员变量在栈帧或寄存器上分配空间,这样就不会因为没有一大块连续空间导致对象内存不够分配。为新的对象在eden分配空间时,如果空间不够,触发Minor GC, Minor GC后,Surviovor没有足够空间存储存活对象, 会将存活对象移动到老年代。给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失效,计数器就减1;原创 2025-08-13 00:15:32 · 939 阅读 · 0 评论 -
JVM垃圾回收器
缺点:内存利用率低,有一块区域无法使用。原创 2025-08-16 14:27:02 · 843 阅读 · 0 评论 -
JVM类加载机制
三句话总结JDK8的类加载机制:1. 类缓存:每个类加载器对他加载过的类都有⼀个缓存。2. 双亲委派机制:向上委托查找,向下委托加载。3. 沙箱保护机制:不允许应⽤程序加载JDK内部的系统类。// todo JDK8中类加载体系图。原创 2025-08-10 00:10:47 · 312 阅读 · 0 评论 -
JVM调优工具
为了图方便对于JVM级缓存就简单使用一个hashmap,于是不断往里面放缓存数据,但是很少考虑这个map的容量问题,结果这个缓存map越来越大,一直占用着老年代的很多空间,时间长了就会导致full gc非常频繁,这就是一种内存泄漏。6. 执行 jstack <pid>|grep -A 10 4cd0,得到线程堆栈信息中 4cd0 这个线程所在行的后面10行,从堆栈中可以发现导致cpu飙高的调用方法。使用命令top -pid <pid> ,显示你的java进程的内存情况,pid是java进程号.原创 2025-08-19 09:27:32 · 780 阅读 · 0 评论