
jvm
文章平均质量分 79
明天会更好new
冲
展开
-
JVM(六):堆概述
JVM(六):堆概述 堆是线程共享的——》堆相对进程是唯一的。 一个进程对应一个JVM实例,一个JVM实例只有一个运行时数据区,一个运行时数据区只有一个堆。 堆空间虽然是线程共享的但里面的缓冲区是线程私有的,因为线程共享如果用同步来解决多线程问题效率很差,所以用一个区域每个线程私有,TLAB。 几乎所有的对象实例都在堆上。 堆的内存结构 堆在逻辑上按“代”来划分 java7之前逻辑上分为:新生区、养老区、永久区 java8逻辑上分为:新生区、养老区、元空间 新生区=新生代=年轻代 养老区=老年区=老年代 永原创 2021-05-21 23:27:55 · 170 阅读 · 0 评论 -
JVM(五):Java虚拟机栈完结与面试题
JVM(五):Java虚拟机栈完结与面试题 栈真的是很重一块,但是后面没多少了,一鼓作气! 方法返回地址 作用:存放该方法的pc寄存器的值(pc寄存器存的是下一条指令的值)。 它的作用是获得下一条指令的值交给执行引擎,继续操作。 如果是遇到异常并且没有处理,那就方法退出。 正常完成和异常完成的区别是:异常完成出口退出的不会给它的上层调用者产生任何的返回值。 一些附加信息 保存与Java虚拟机实现相关的附加信息,可以没有。 面试题 先复习一下,看看剩下了什么。 栈是管方法的,是线程私有的,基本单位是栈帧,执行原创 2021-05-19 23:01:23 · 127 阅读 · 0 评论 -
JVM(四):栈帧动态连接与方法调用详解
JVM(四):栈帧动态连接与方法调用详解 学习JVM的一些分享,希望看到的人学起JVM更快 我写的这个JVM系列算是笔记,学习的是: 视频:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 书籍:《深入理解Java虚拟机》 说一下学习过程中遇到的问题,按照一二三章这个顺序看这本书我看不懂,第二章简单说了一下JVM运行时内存数据区,很多名词,第三章直接GC,根本不知道各个区是干嘛的怎么运行,然后就去看视频了。 视频讲解顺序是概述、类加载(对应书第七章)、详细介绍JVM运行时内存数据区各个部原创 2021-05-19 21:43:59 · 593 阅读 · 0 评论 -
JVM(三):Java虚拟机栈概述、栈帧、栈帧中的局部变量表
虚拟机栈这一部分真的很重要,内容也比较多,一起来看一下吧。 Java虚拟机栈概述 栈是管方法的,基本单位是栈帧,一个栈帧就是一个方法,栈只有两个操作:入栈和出栈,执行一个方法,这个代表这个方法的栈帧入栈,作为栈顶,这个方法是当前方法,执行结束,栈帧出栈。 栈是线程私有的,生命周期与线程一致。 栈中是没有垃圾回收的,但是有OOM(内存溢出)。 这是因为栈的大小可以是固定的,也可以是动态的,这个是程序员可以设置的。 关于栈的异常 StackOverflowError:当设置JVM栈大小固定时栈溢出报错 OutO原创 2021-05-18 18:23:13 · 398 阅读 · 0 评论 -
JVM(二):运行时数据区概览与程序计数器
JVM(二):运行时数据区概览与程序计数器 线程私有的是程序计数器、本地方法栈、虚拟机栈,线程共享的是堆和方法区。 而垃圾回收95%集中在堆5%在方法区。 各区作用 堆:存放对象实例。 方法区:存放加载的类信息,包括类型信息、常量、静态变量、代码缓存等。 本地方法栈:使用本地方法。 虚拟机栈:线程私有生命周期与线程同步 程序计数器:程序历程控制器。 ...原创 2021-05-15 23:15:15 · 101 阅读 · 0 评论 -
JVM(一):类加载与类加载机制(双亲委派等)
JVM(一):类加载与类加载机制(双亲委派等) 首先看jvm的整体结构 类加载器的作用 将.class文件中描述类的数据加载到内存,并且对数据进行校验、转换、解析和初始化。 类加载的三个步骤 加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象。 java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。它包含了与类有关的信息。其实我们的实例对象就通过Class对象来创建的。Java使用Class对象执行其RTTI(运原创 2021-05-14 23:18:44 · 136 阅读 · 4 评论