JVM
文章平均质量分 52
解析JVM结构和原理
诗人不写诗
当你足够努力时,全世界都会给你让路
展开
-
1-Java运行时数据区域和内存模型
我们知道,操作系统为每个进程都分配了一个虚拟的内存空间,进程会认为自己的操作都在这个空间上进行,这个空间的布局是操作系统控制的,每个进程都是一样的。JVM也是一个进程,他的内存布局肯定也是操作系统安排的,这是毋庸置疑的,那JVM运行时数据区域又是怎么一回事呢?我们已经知道一个进程的内存布局是什么样的(),JVM进程的布局也遵循这个规则,但是JVM在这个布局内做了很多不属于应用程序业务逻辑的事情。原创 2020-12-10 00:06:11 · 228 阅读 · 0 评论 -
2-JVM垃圾收集回收
垃圾收集是编程语言在设计时需要考虑的问题,垃圾收集最早起源于LISP语言,有很多语言都是支持垃圾收集的,如Python、Go、PHP、Js、Lua、Java、C#、D等, 不支持垃圾回收的语言有c/c++等。所以垃圾收集不是Java一个要面对的问题,这是个通用的技术点,这里我们只讨论Java相关的垃圾收集。一、JVM需要回收的区域JVM规范定义了运行时数据区域分为5个部分,分别为堆、方法区、虚拟机栈、本地方法栈、程序计数器。其中虚拟机栈、本地方法栈、程序计数器都是伴随线程生命周期关联,随线程产生原创 2022-03-20 17:43:13 · 427 阅读 · 0 评论 -
语言的内存模型
对于编程语言而言,最终编译的指令是要和具体的硬件打交道的,但是硬件规格是不同的,而编程语言的语义是唯一的,所以需要一个中间层来兼容多种硬件和唯一语义之间的关系。 对于C/C++而言,这个中间层是编译器来实现的,当然C++11之前是不提供内存模型的,C++11之后才有,对于Java而言,这个中间层当然是由JVM实现的。 编程语言在内存模型上的规定涉及的主要是对内存的存取特性,特别...原创 2018-06-27 00:02:14 · 232 阅读 · 0 评论 -
Tomcat为什么要重写类加载器?
一般的Java应用,启动时从main()方法进入,就会使用JDK的类加载器进行类的加载和运行,JDK会顺藤摸瓜将所有涉及的类全都加载到JVM中,这一切都不需要我们做什么,但是有一些服务软件会自定义类加载器,这是为什么?能有什么用?同一个类可以被不同类加载器加载全类名相同的一个类,是可以被不同的类加载器多次加载的,Java中,判断一个Class是否相同,需要判断全类名和所属的类加载是否都相同才行。不同类加载器加载的路径不同每一个类加载要加载的类的路径是确定的,由实现的类加载器内部写死,所以JD原创 2022-03-29 23:50:18 · 474 阅读 · 0 评论 -
HotSpot垃圾回收器分类
JVM不是定时去清理垃圾,而是在内存不足时采取清理,这样虽然显得不勤快,但是对应用稳定运行是很有帮助的,因为垃圾回收时有可能stop the world。hotspot里垃圾回收器不止一个,因为堆区是分代的,不同代使用的垃圾回收器是不同的,这样才能更高效的进行垃圾回收。oracle官方gc说明地址:Getting Started with the G1 Garbage Collector根据垃圾回收范围分类minor gcminor的意思是次要的,表明一种动静比较小,影响比较小的垃圾回收动原创 2022-03-26 22:30:43 · 495 阅读 · 0 评论 -
CMS垃圾回收器
CMS:Concurrent Mark Sweep 并发标记清除,我们知道,标记清除算法在回收速度上存在绝对优势,但是存在内存碎片问题,CMS通常用于老年代区域的垃圾回收。如果你的应用内存使用较少且对应用持续快速响应有要求,那么CMS垃圾回收器是个不错的选择。CMS垃圾回收器主要分为四个步骤:1、初始标记,2、并发标记,3、重新标记,4、并发清除。初始标记初始标记只标记gc roots对应的对象,为了能找到gc roots,该动作会导致stop-the-world,但是持续时间很短。并发标记原创 2022-03-21 21:32:04 · 694 阅读 · 0 评论 -
Java 8+性能调优
JVM是一个应用程序,他提供了启动参数给用户,用以个性化的设置自己应用的参数,我们可以根据自己的硬件特点已经应用特点来设置个性化参数,发挥最佳性能。一、JVM内存区域jvm规范规定的内存区域为:1、堆,存储类实例,静态变量,常量池2、方法区,实现为metaspace,存储类型的元信息3、虚拟机栈4、本地方法栈5、程序计数器Java8之前有个PermGen区域,是方法区的实现,PermGen在虚拟机中,受jvm约束,Java8之后PermGen被删除了,出现metaspace,metadp原创 2021-11-04 22:27:23 · 255 阅读 · 0 评论