Java代码在执行时一旦被编译器编译为机器码,下一次执行的时候就会直接执行编译后的代码,也就是说,编译后的代码被缓存了起来。缓存编译后的机器码的内存区域就是CodeCache。 这是一块独立于java堆之外的内存区域。除了JIT编译的代码之外,java所使用的本地方法代码(JNI)也会存在CodeC ...
分类:
其他好文 时间:
2020-10-08 18:12:29
阅读次数:
19
运行时数据区域 1)程序计数器 一块较小的内存空间,是当前线程所执行的字节码的行号指示器。 线程私有 线程执行Java方法,记录的是正在执行的虚拟机字节码指令的地址。执行Native方法,计数器值为空。 2)Java虚拟机栈 每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接 ...
分类:
编程语言 时间:
2020-10-06 21:00:21
阅读次数:
33
运行时数据区 程序计数器/PC寄存器 线程私有,程序计数器是一块较小的内存空间,当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变计数器的值来选择下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。 如果线程在执行java方法,计数器记录 ...
分类:
编程语言 时间:
2020-09-17 23:11:27
阅读次数:
31
福哥答案2020-08-29: 1.根本区别进程:资源调度最小单位。线程:CPU调度最小单位。 2.地址空间进程:进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段。线程:线程没有独立的地址空间,同一进程的线程共享本进程的地址空间。 3.内存和 ...
分类:
编程语言 时间:
2020-09-10 22:40:09
阅读次数:
39
内存模型 方法区(Method Area):方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 异常。方法区里存放着类的版本,字段,方法,接口和常量池。常量池里存储着字 ...
分类:
其他好文 时间:
2020-08-27 17:11:42
阅读次数:
67
1.GC回收哪些内存区域呢?堆内存对象数组方法区该类所有的额实例都已经被回收,也就是java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对应的java.lang.Class对象在任何地方没有被引用,也无法通过反射访问该类方法。垃圾回收性价比比较低,一般不回收废弃常量无用的类(需要同时满足以下三个条件)2.GC是如何判断垃圾对象的?1.引用计数法给对象的对象头中添加一个co
分类:
编程语言 时间:
2020-08-18 13:42:33
阅读次数:
73
栈内存:栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为局部变量的生 ...
分类:
编程语言 时间:
2020-08-06 17:10:24
阅读次数:
77
本节内容为类的生命周期 引言 对象究竟是一个什么东西?对于许多初学者而言,对象都是一个非常抽象的知识点。如果非要用一句话描述,我觉得“万物皆对象”是对于对象最全面的概述了。本节内容中,我们将以在富土康打工的张全蛋组装一台水果手机作为例子,详细的讲解面向对象的各个方面。 对象类的构造 “张全蛋,你去水 ...
分类:
Web程序 时间:
2020-08-06 11:57:35
阅读次数:
86