垃圾收集前的判断 1:判断对象“死活” 引用计数算法:定义略,主流的Java虚拟机并没有选用引用计数算法来管理内存,因为此算法很难解决对象之间的相互循环引用的问题 可达性分析算法:定义略,可作为GC Roots的对象包括: 1:虚拟机栈(栈帧中的本地变量表)中引用的对象 2: 方法区中静态类属性引用 ...
分类:
其他好文 时间:
2020-07-06 12:43:22
阅读次数:
67
内存区域虚拟机栈生命周期与线程相同,描述的是Java方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧,用于存取局部变量表、操作数栈、动态链接、方法出口等信息本地方法栈与虚拟机栈作用相似,只不过本地方法栈是为虚拟机使用到的Native方法服务程序计数器内存空间较小,可以看做是当前线程所执行的字节码的行号指示器。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryErr
分类:
其他好文 时间:
2020-07-04 10:32:13
阅读次数:
70
# 递归的三个条件 # 基本结束条件 # 向基本结束条件演进 # 调用自身 # 理解递归# 递归就是把大问题一步步不断的化解为小问题,小问题解决后在一步步依赖回去解决大问题。# (1+3+5+7+9) # -> (1+(3+5+7+9)) # ->(1+(3+(5+7+9)))# ->(1+(3+( ...
分类:
编程语言 时间:
2020-07-01 20:30:23
阅读次数:
62
垃圾回收(GC),主要关注三个点:如何进行回收,哪些内存需要回收,什么时候回收。 在上一个文章中介绍到了程序计数器,Java虚拟机栈,本地方法栈会随着线程生而生灭而灭,同时Java虚拟机栈中的栈帧会随着方法的进入和退出执行者入栈和出栈的操作。每一个栈帧分配多少内存在类结构确定的时候就已经确认(JIT ...
分类:
其他好文 时间:
2020-06-26 16:50:13
阅读次数:
60
Visual Studio编写C++代码使用汇编函数 新建空项目 新建如下源文件 ;test.asm ;测试函数 三个数相加 ;.386 .model flat, c ;public test_ .code test_ proc ;初始化栈帧指针 push ebp mov ebp,esp ;加载参数 ...
分类:
编程语言 时间:
2020-06-24 23:18:39
阅读次数:
106
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去。这不他来了,一份详细的JVM面试真题给大家整理在下方了!一、什么情况下会发生栈内存溢出?1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括
分类:
其他好文 时间:
2020-06-15 10:35:39
阅读次数:
97
一、理解Java虚拟机栈和栈帧 1.1 什么是栈帧呢? 每个栈帧被认为对应是一个被调用的方法,可以理解为一个方法的运行空间。 官方地址:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6 栈帧的组成部分: 1 ...
分类:
其他好文 时间:
2020-05-30 18:20:27
阅读次数:
55
int a[100];cout << a; int a[10000];cout << b; 上面两种情况分别记为①和②。 经常会遇到①的输出不全为0,而②全为0的情况。 推测原因:开辟数组长度不够大时,esp的mov长度不够大,a数组占据了使用完毕但未清零的栈帧。 ...
分类:
编程语言 时间:
2020-05-25 22:23:55
阅读次数:
73
一.相关概念 GC需要完成三件事:1,哪些内存需要回收?2:什么时候回收?3:如何回收? Java内存运行时区域的各部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。 每一个栈帧中分配多少内存基本上是在类结构确定 ...
分类:
编程语言 时间:
2020-05-21 19:17:01
阅读次数:
59
至今为止,我基本上发现网上没有几个博客说的很明白的,今天我在这里斗胆总结一下,各位大佬,如有错误,还望指责 ^ _ ^ 首先那肯定还得是看看概念了,在JVM中,什么可以作为GC Root呢? 虚拟机栈(栈帧中的本地变量表)中引用的对象。 方法区中类静态属性引用的对象。 方法区中常量引用的对象。 本地 ...
分类:
其他好文 时间:
2020-05-20 18:41:21
阅读次数:
201