栈帧由三部分组成:局部变量区,操作数找和帧数据区。局部变量区和操作数栈的大小要 视对应的方法而定,它们是按字长计算的。编译器在编译时就确定了这些值并放在class文件中。 而帧数据区的大小依赖于具体的实现。当虚拟机调用一个Java方法时,它从对应类的类型信息中得到此方法的局部变量区和操作数 栈的大小 ...
分类:
其他好文 时间:
2019-12-03 21:36:39
阅读次数:
102
前面提到的所有运行时数据区都是在Java虚拟机规范中明确定义的,除此之外,对于一个运 行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区。当某个线程调用一个本地 方法时,它就进人了一个全新的并且不再受虚拟机限制的世界。本地方法可以通过本地方法接 口来访问虚拟机的运行时数据区,但不止于此 ...
分类:
其他好文 时间:
2019-12-03 21:26:50
阅读次数:
92
对于一个运行中的Java程序而言,其中的每一个线程都有它自己的PC (程序计数器)寄存 器,它是在该线程启动时创建的。PC寄存器的大小是一个字长,因此它既能够持有一个本地指 针,也能够持有一个returnAddress。当线程执行某个Java方法时,PC寄存器的内容总是下一条 将被执行指令的“地址“ ...
分类:
其他好文 时间:
2019-12-03 21:25:41
阅读次数:
64
1 class Demo 2 { 3 public static int sum(int ... data) { //此处可以传递一个数组,也可以是多个参数 4 int sum = 0; 5 for (int i : data) 6 sum = sum + i; 7 return sum; 8 } ...
分类:
编程语言 时间:
2019-11-30 21:37:04
阅读次数:
137
栈内存是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、返回出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。栈帧(Frame)是用来存储数据和部分过程结果的数据结构,同 ...
分类:
其他好文 时间:
2019-11-27 23:39:40
阅读次数:
72
题目
JVM的内存区域是怎么划分的?
OOM可能发生在哪些区域上?
堆内存结构是怎么样的?
常用的性能监控与问题定位工具有哪些?
分类:
编程语言 时间:
2019-11-27 09:14:29
阅读次数:
95
斐波那契数列的定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列安纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、.....在数学上,斐波那契 ...
分类:
编程语言 时间:
2019-11-21 17:05:19
阅读次数:
88
不积跬步,无以至千里;不积小流,无以成江海。 Java语言基础 Java方法详述(重载与重写) 重载的概念: 在同一个类中,允许存在一个以上的的同名方法,只要它们的参数个数或者参数类型不同即可。 重载的特点: 与返回值类型无关,只看参数列表,且参数列表必须不同(访问修饰符和返回值类型可以相同也可以不 ...
分类:
编程语言 时间:
2019-11-20 16:47:16
阅读次数:
61
良心制作,JVM原理速记复习Java虚拟机总结思维导图面试必备。
一、运行时数据区域
线程私有
程序计数器
记录正在执行的虚拟机字节码指令的地址(如果正在执行的是Native方法则为空),是唯一一个没有规定OOM(OutOfMemoryError)的区域。
Java虚拟机栈
每个Java方法在执... ...
分类:
编程语言 时间:
2019-11-16 23:46:01
阅读次数:
156
IDEA查看源码 IDEA快捷键 1 查看接口的实现类:Ctrl+Alt+B 选中按快捷键,然后跳到实现类的地方去 2 切换页面:Alt+<- 和 Alt+-> Alt+-> 3 查看Java方法调用树(被调/主调):Ctrl+Alt+H 分为调用当前方法的树、当前方法调用的下级方法 4 查看类继承 ...
分类:
Web程序 时间:
2019-11-15 12:15:04
阅读次数:
91