一个类的生命周期 运行时数据区 ProgramCounter(程序计数器) 程序计数器:用于记录当前运行到哪一个指令 每个Java虚拟机线程都有自己的pc(程序计数器)寄存器(线程独享的) 在任何时刻,每个Java虚拟机线程都在执行单个方法的代码,即该线程的当前方法 如果该方法不是本机的,则pc寄存 ...
分类:
其他好文 时间:
2020-05-15 17:30:41
阅读次数:
100
第二章:Java内存区域与内存溢出异常 2.1 运行时数据区 1:程序计数器 : 线程私有,较小的内存空间,当前线程所执行的字节码的行号指示器,唯一不会发生错误的内存区域 2:虚拟机栈: 线程私有,生命周期和线程相同,为虚拟机执行Java方法服务,指的是Java内存模型,可发生StackOverfl ...
分类:
编程语言 时间:
2020-05-15 13:54:48
阅读次数:
66
概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此, ...
分类:
编程语言 时间:
2020-05-10 11:23:11
阅读次数:
81
1、新建 new 关键字创建线程之后,该线程处于新建状态 JVM为线程分配内存,初始化成员变量值 2、就绪 线程调用start()方法,线程处于就绪状态 JVM为线程创建方法栈和程序计数器,等待线程调度器调度 3、运行 就绪态的线程获得CPU资源,开始执行run()方法,线程处于运行状态 4、阻塞 ...
分类:
编程语言 时间:
2020-05-10 10:21:08
阅读次数:
61
1.JVM内存模型 答:https://www.cnblogs.com/cxiaocai/p/11483629.html 先经过类装载子系统装载,经由验证,准备,解析,初始化四个过程。方法被调用,方法进栈,对象放在堆,栈内存的引用指向我们的对象,方法逐行执行,由我们的程序计数器来控制。元空间放置静态 ...
分类:
编程语言 时间:
2020-05-08 18:07:19
阅读次数:
64
不管是BAT面试,还是工作实践中的JVM调优以及参数设置,或者内存溢出检测等,都需要涉及到Java虚拟机的内存模型、内存分配,以及回收算法机制等,这些都是必考、必会技能。 JVM内存模型 JVM内存模型可以分为两个部分,如下图所示,堆和方法区是所有线程共有的,而虚拟机栈,本地方法栈和程序计数器则是线 ...
分类:
编程语言 时间:
2020-05-07 13:46:31
阅读次数:
73
Java虚拟机运行时数据区图 程序计数器 程序计数器,可以看作当前线程所执行的字节码的行号指示器 它是线程私有的。 Java虚拟机栈 线程私有的,生命周期与线程相同。 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息。 局部变量表存放各种基 ...
分类:
其他好文 时间:
2020-05-05 11:10:19
阅读次数:
62
JVM运行时数据区域 Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为若干个不同的数据区域。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示 程序计数器 程序计数器: 可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下 ...
分类:
其他好文 时间:
2020-05-01 17:04:47
阅读次数:
90
一、了解JVM 1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成 如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如 ...
分类:
编程语言 时间:
2020-04-29 17:48:15
阅读次数:
65
Java内存分配?寄存器:程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码。?静态域:static定义的静态成员。?常量池:编译时被确定并保存在.class文件中的(final)常量值和一些文本修饰的符号引用(类和接口的全限定名,字段的名称和描述符,方法和名称和描述符)。?非RAM存储:硬盘等永久存储空间。?堆内存:new创建的对象和数组,由Java虚拟机自动垃圾回收器管理,存取速
分类:
其他好文 时间:
2020-04-29 14:26:04
阅读次数:
65