JVM
文章平均质量分 83
打分几楼MOTO
这个作者很懒,什么都没留下…
展开
-
06-jvm-堆
6.1 堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了.是JVM管理的最大一块内存空间 堆的大小是可以调节的 <<Java虚拟机规范>>规定,堆可以处于物理上不连续的内存空间中,但在逻辑上他应该被视为连续的 所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Allocation Buffer, TLAB) 栈-堆-方法区的联系结构图.原创 2022-02-27 23:36:03 · 546 阅读 · 0 评论 -
05-虚拟机栈
目录5.1-虚拟机栈概述5.2 栈的基本单位5.3-局部变量表5.4-操作数栈5.5-代码追踪5.6-栈顶缓存技术5.7-动态链接5.8-方法的调用5.9方法返回地址5.10-附加信息5.11虚拟机栈面试题5.1-虚拟机栈概述虚拟机栈出现的背景 由于跨平台的设计,Java指令都是根据栈来设计的.不同平台CPU架构不同,所以不能设计为基于寄存器的 优点:跨平台,指令集小,编译器容易实现 缺点:性能下降,实现同样的功能需要更多的指令 内存中..原创 2022-01-24 15:00:31 · 503 阅读 · 0 评论 -
04-程序计数器(pc寄存器)
4.1 pc寄存器的介绍JVM中的程序计数器并非是广义上所指的物理寄存器,或者将其翻译为PC寄存器(指令计数器)会更加贴切(也叫程序钩子),并且也不容易引起一些不必要的误会,JVM中的PC寄存器是对物理PC寄存器的一种抽象的模拟.它是一块很小的内存空间,几乎可以忽略不计,也是速度最快的存储区域在JVM规范中,每个线程都有他自己的程序计数器,是线程私有的,生命周期和线程的生命周期保持一致 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法.程序计数器会存储当前线程正在执行的.原创 2022-01-23 13:29:46 · 496 阅读 · 0 评论 -
03-运行时数据区概述及线程
内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请,分配,管理的策略,保证了JVM的高效稳定运行.不同的JVM对于内存的划分方式和管理机制存在着部分差异.结合JVM虚拟机规范,来探讨一下经典的JVM内存布局,Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁.另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建...原创 2022-01-23 12:43:25 · 444 阅读 · 0 评论 -
02-类加载子系统
2.1 内存结构概述英文版详细的内存结构图中文版详细的内存结构图2.2 类加载器与类的加载过程类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识. ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定 加载的类信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中还会存放运行时常量池信息(对应的是Class文件中的常量池),可能还包括字符串字面量和数字常量(这部原创 2022-01-22 23:50:43 · 350 阅读 · 0 评论 -
01-JVM与Java体系结构
1.1 我们为什么要学习JVM面试的需要 中高级程序员的必备技能 项目管理,调优的需要 追求极客的精神 比如:垃圾回收算法,JIT,底层原理 1.2 JVM的特性跨语言的平台(不同的变成语言提供不同的编译器,编译成字节码文件,只要字节码文件符合Java虚拟机的规范就可以在Java虚拟机上解释运行,只关心字节码文件)1.3JVM介绍Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制.其运行的java字节码未必由Java语言编译而成 JVM平台的各种原创 2022-01-22 19:08:13 · 412 阅读 · 0 评论 -
JVM-17(垃圾收集器)下
这款收集器是HotSpot虚拟机第一款真正意义上的并发收集器,他第一次实现了让垃圾收集线程与用户线程同时工作目前很大一部分的Java应用集中在互联网或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间越短标记-清除CMS收集器作为老年代的收集器,新生代只能选择PraNew或者Serial收集器中的一个初始标记,并发标记,重新标记,并发清除仅仅只是标记出GC Roots能直接关联到的对象速度非常快直接关联对象开始遍历整个对象图的过程耗时较长。原创 2022-01-09 21:34:18 · 1253 阅读 · 0 评论 -
JVM-17(垃圾回收器)上
目录17.1 GC分类与性能指标17.1.1 JVM的发展17.1.2评估GC的性能指标17.2 不同的垃圾回收器概述17.3 Serial回收器:串行回收17.4 ParNew回收器: 并行回收17.5 Parallel回收器: 吞吐量优先17.1 GC分类与性能指标17.1.1 JVM的发展垃圾收集器没有在规范中进行过多的规定,可以有不同的厂商,不同的版本的JVM来实现 由于JDK的版本处于高速迭代中,因此Java发展至今已经衍生了众多的GC版本原创 2022-01-06 22:52:02 · 1309 阅读 · 0 评论 -
JVM-16(垃圾回收相关概念)
目录16.1 System.gc()的理解16.2 内存溢出与内存泄漏16.3 Stop the world16.4 垃圾回收的并行与串行16.5 安全点与安全域16.6 再谈引用:强引用16.7 再谈引用:软引用16.8 再谈引用:弱引用16.8 再谈引用:虚引用16.9 再谈引用:终结器引用16.1 System.gc()的理解在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显示触发Full GC.同原创 2021-12-26 20:20:11 · 483 阅读 · 0 评论 -
JVM-15(垃圾回收相关算法)
上述现有的算法,在垃圾回收过程中,应用软件将处于一种Stop the World的状态.在Stop the World状态下,应用程序所有的线程都会挂起,暂停一切正常的工作,等待垃圾回收的完成.如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或者系统的稳定性.为了解决这个问题,即对实时垃圾收集算法的研究直接导致了增量收集(Increment Collecting)算法的诞生。以上3中状态中,是由于finalize()方法的存在,进行的区分.只有在对象不可触及时才可以被回收.原创 2021-12-26 01:13:30 · 185 阅读 · 0 评论 -
JVM-14(垃圾回收概述)
目录14.1什么是垃圾14.1.1 前提知识14.1.2大厂面试题14.1.3什么是垃圾14.2 为什么需要GC14.3 早期垃圾回收14.4 Java垃圾回收机制14.4.1 前提知识14.4.2 担忧14.2 应该关心哪些区域被回收14.1什么是垃圾14.1.1 前提知识垃圾收集,不是Java语言的伴生产物.早在1960年,第一门开始使用内存动态分配和垃圾收集技术Lisp语言诞生.关于垃圾收集有三个经典问题哪些内存需要回收? 什么时候回收?原创 2021-12-24 20:36:58 · 576 阅读 · 0 评论