摘要:
Lambda表达式简介: Lambda表达式,也可称为闭包,Java8新特性。 Lambda允许将函数作为一个方法的参数(函数作为参数传递进方法中)。 使用Lambda表达式可以使代码更加简洁紧凑。 尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。 Lambda对接口的要求: 虽然使用La 阅读全文
摘要:
1、堆介绍 一个JVM实例只需要一个堆内存,堆内存的大小是可以调节的。类加载器在读取类文件之后,需要把类、方法、常变量放在堆内存中,保存所有引用类型的真实信息,以Execution Engine执行。 堆逻辑上由“新生区+养老区+元空间”三部分组成,物理上由“新生区+养老区”两部分组成。 新生区是类 阅读全文
摘要:
HotSpot VM 目前使用最广泛的虚拟机 HotSpot使用指针的方式来访问对象 Java堆中会存放访问类的元数据(元数据:描述数据的数据,即模板)地址 reference直接存储对象的地址 阅读全文
摘要:
栈管运行,堆管存储 Java栈在线程创建时创建,它的生命周期跟随线程的生命周期,线程结束占内存也就释放 线程私有,不存在垃圾回收机制 8种基本类型的变量+对象的引用类型+实例方法都是在函数的栈内存中分配的 栈帧(方法压入栈之后叫栈帧)中主要存储3类数据: 本地变量:输入参数和输出参数以及方法内变量 阅读全文
摘要:
方法区绝不是放方法的地方,它存储一个类的结构信息 方法区是一种规范,在不同虚拟机中的实现不一样,最典型的就是永久代和元空间 Java 7中:方法区 f = new 永久代(); Java 8中:方法区 f = new 元空间(); 阅读全文
摘要:
每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也是即将要执行的指令代码),由执行引擎读下一条指令,是一个非常小的内存空间,几乎可以忽略不计。 这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值 阅读全文
摘要:
public class Main { public static void main(String[] args) { Thread thread = new Thread(); thread.start(); thread.start(); } } //IllegalThreadStateExc 阅读全文
摘要:
1、什么是类加载器 类加载器负责加载class文件,class文件在文件的开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构。 Class Loader只负责class文件的加载,至于他是否可以运行,则由Execution Engine决定。 并 阅读全文
摘要:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例 2: 输入:[2,2 阅读全文
摘要:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输 阅读全文