JVM运行时数据区域
1、运行时数据区域Java虚拟机所管理的内存主要包括以下几个运行时数据区域: 1.1 程序计数器 程序计数器是一块较小的内存空间,他可以看作是当前线程所执行的字节码的行号指示器。 在Java虚拟机的概念模型里,字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、 跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 程序计数器-线程私有 如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址; 如果正在执行的本地(Native)方法,这个计数器值则应为空(Undefined) 程序计数器是jvm内存区域中唯一一个在《Java虚拟机规范》中没有规定任何OutOfMemoryError的区域 1.2 Java虚拟机栈 线程私有,它的生命周期与线程相同。 虚拟机栈描述的是Java方法执行的线程的内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack...
JAVA基础回顾
1. 8种基本数据类型 2. 面向对象的三大特性 封装 继承 多态 3. ==、hashCode()、 equals() == 本质:是一个比较运算符 作用:比较俩个对象地址是否相等,基本数据类型比较的是值,引用数据类型比较的是内存地址 hashCode() 本质:返回一个int整数值(哈希码/散列码) 作用:确定该对象在哈希表中的索引位置,也就是说hashCode()在散列表(Java集合中本质是散列表的类,如HashMap,Hashtable,HashSet。)中才有用,在其它情况下没用(例如,创建类的单个对象,或者创建类的对象数组等等)。 hashcode()定义在JDK的Object.java中,所以Java中的任何类都包含有该方法 使用:比较俩个引用类型对象是否相等时,需要重写该方法 equals() 作用:判断俩个引用类型对象的地址是否相等 使用: 1). 类没有重写equals()方法。调用equals()比较该类的俩个对象时,等价与’==’,比较的是俩个对象的地址值。 ...