为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈。由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件。 实现方法,首先用__builtin_frame_address()函数获取堆栈的当前帧的地址(faddr), ×faddr(栈帧的第一个单元存放 ...
分类:
系统相关 时间:
2018-01-30 17:09:05
阅读次数:
2145
https://stackoverflow.com/questions/111102/how-do-javascript-closures-work 1、闭包是支持一流功能的一种方式;它是一个表达式,可以在其范围内引用变量(当它第一次被声明时),被分配给一个变量,作为参数传递给函数,或者作为函数结果 ...
分类:
Web程序 时间:
2018-01-24 14:02:24
阅读次数:
205
jvm运行时内存空间: 方法区 jvm虚拟机栈 本地方法栈 { java堆 } 程序计数器 | | | | 执行引擎 >本地接口 >本地方法库 程序计数器: 进程切换时用户保留现场jvm虚拟机栈: 保存参数,局部变量,中间计算过程和其他数据。 每个方法被执行时多会创建一个栈帧(每个方法执行,对应一个 ...
分类:
其他好文 时间:
2018-01-21 22:39:00
阅读次数:
191
PHP Error 和 Logging 函数 实例 生成 PHP backtrace: <?php function a($txt) { b("Glenn"); } function b($txt) { c("Cleveland"); } function c($txt) { var_dump(de ...
分类:
Web程序 时间:
2018-01-21 16:17:19
阅读次数:
390
图中给出了在一个典型c++程序中如何组织内存的框架。程序中的指令(在底层都是按位存储的)和全局变量往往被存储在静态去(static area),该区域位于地址编址号较小的接近机器地址空间的开始处。该区域所分配的内存量在程序运行期间不会发生改变。 内存中的最高地址区表示栈区(stack area)。当 ...
分类:
编程语言 时间:
2018-01-20 00:58:55
阅读次数:
188
Java栈可以被称之为Java虚拟机栈,它同PC寄存器一样是线程私有的。并且生命周期与线程保持一致。Java栈用于存储栈帧,而栈帧中所存储的就是局部变量表、操作数栈,以及方法出口等信息。 Java堆区中既然存储的是对象实例,那么Java栈中局部变量就是用于存储各类原始类型数据、对象引用、以及retu ...
分类:
其他好文 时间:
2017-12-31 00:37:40
阅读次数:
162
以下内容基于python3.4 1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧。想要获得某个函数相关的栈帧,则必须在调用这个函数且这个函数尚未返回时获取,可能通过inspect模块的curren ...
分类:
编程语言 时间:
2017-12-22 23:57:15
阅读次数:
227
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创 建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方 ...
分类:
编程语言 时间:
2017-12-20 17:52:58
阅读次数:
173
在介绍递归函数之前,我们先介绍以下递归函数的使用有以下特征: 1.递归函数就是函数在函数体内部调用本身 2.递归函数的运算规模要不断减小,这样才是可以运算的 3.递归的层数不要超过999,因为函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就 ...
分类:
编程语言 时间:
2017-12-12 23:59:26
阅读次数:
384
一 反射机制的概念: 指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制. 二 反射机制的应用: 生成动态代理,面向切片编程(在调用方法的前后各加栈帧). 三 反射机制的原 ...
分类:
编程语言 时间:
2017-12-11 23:06:33
阅读次数:
248