`

Call stack 与 Stack frame的概念

    博客分类:
  • Java
 
阅读更多

      Call stack(调用堆栈):调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。
      Java has metaobjects(Class类信息对象) that represent the execution state of the running program, including metaobjects that represent the call stack.

      调用栈可能就是方法栈的意思,方法栈是JVM为对象的每一次方法调用所分配的一块独立的内存空间,在对方法栈的理解上需要注意这样几个地方:
1.方法栈不是对象唯一的,对同一个对象的方法调用2次,这2次的方法栈是不一样的。
2.方法栈是不能互相通信的,也就是说当一个方法还没有返回任何值的时候,方法外部是不能获得该方法内部参数的状态的。

      Stack frame(堆栈帧)是一个为函数保留的区域,用来存储关于参数、局部变量和返回地址的信息。堆栈帧通常是在新的函数调用的时候创建,并在函数返回的时候销毁。

      Each thread of execution has a call stack consisting of stack frames. Each frame in the call stack represents a method call. Stack frames contain information such as an identification of the method, the location of the statement that is currently executing, the arguments to the method, local variables and their values, and so on. In Java, the frame at the bottom of a call stack represents the main method of an application or the run method of a thread.
---英文部分来自《java reflection in action》的介绍

 

分享到:
评论

相关推荐

    Stack Frames pdf

    栈帧的概念与计算机的内存管理紧密相关,特别是在堆栈和堆的区别中。栈内存由系统自动管理,而堆内存则需要程序员手动分配和释放。栈帧的使用提高了程序的效率,因为它避免了频繁的内存分配和释放操作,同时也简化了...

    axis2解决 org.apache.axis2.util.JavaUtils.callStackToString问题

    7. **查阅官方文档和社区资源**:如果以上步骤不能解决问题,可以查阅Apache Axis2的官方文档,或者在Apache Axis2的用户论坛、Stack Overflow等社区寻求帮助,看看其他人是否遇到过类似问题并找到了解决方案。...

    详解JS函数stack size计算方法

    首先,我们需要明确几个概念:调用栈(call stack)是一个用于记录程序中函数调用信息的栈结构。每次调用一个函数时,调用栈会记录下来函数的调用信息,并将新的函数调用添加到栈顶。当函数返回时,其调用信息会被从...

    Stack Frames - A Look from Inside.pdf

    ### 栈帧(Stack Frames)概念 栈帧,也被称为活动记录(Activation Record),是程序运行时用于支持过程或函数调用的一种数据结构。在程序执行过程中,每次函数调用时都会创建一个栈帧,用于保存函数调用过程中的...

    stack:与fmt.Errorf相同,但具有堆栈跟踪

    如果你也想保存一个错误,而不是堆栈跟踪fmt.Errorf使用stack.Errorf是兼容errors.Is和errors.As并赋予获得使用错误的堆栈跟踪的能力stack.Trace功能它将返回[]runtime.Frame 。 导入。 import "github....

    axis2.jar 解决 org.apache.axis2.util.JavaUtils.callStackToString问题

    <Call Stack = DEBUG_FRAME = org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564) DEBUG_FRAME = org.apache.axis2.description.ParameterIncludeImpl.debugParameterAdd(ParameterIncludeImpl...

    JVM内核架构--JVM规范

    Whenever a method is invoked a new stack frame is added to the stack and corresponding frame is removed when its execution is completed. Native method stack: holds the state of each native method ...

    从StackTrace获取调用程序集

    StackFrame frame = stackTrace.GetFrame(i); MethodBase method = frame.GetMethod(); Assembly callingAssembly = method.DeclaringType.Assembly; Console.WriteLine($"调用方法:{method.Name},来自程序集...

    在.NET中取得代码行数的方法

    } static private void ReportError(string Message) { StackFrame CallStack = new StackFrame(1, true); Console.Write(“Error: ” + Message + “, File: ” + CallStack.GetFileName() + “, Line: ” + Call...

    Stack

    每当一个函数被调用,一个新的调用帧(call frame)会被压入栈中,存储函数参数、局部变量和返回地址。函数执行完毕后,调用帧会从栈中弹出。 - **递归**:递归算法通常涉及到栈的操作,因为每次函数调用都会在栈上...

    vld(Visual Leak Detector 内存泄露检测工具 源码)

     BOOL StackWalk64( DWORD MachineType, HANDLE hProcess, HANDLE hThread, LPSTACKFRAME64 StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE...

    pythonpdb调试(整理).pdf

    * w:列出目前 call stack 中的所在层。 * d:在 call stack 中往下移一层。 * u:在 call stack 中往上移一层。 * ignore:设定断点的忽略次数,如果没有指定 count,其初始值为 0。 * alias:以一个别名代替一群...

    GlusterFS 之内存池(mem-pool)使用实例分析

    pool->frame_mem_pool=mem_pool_new(call_frame_t,32); ``` - **解释**: 这一行代码通过`mem_pool_new`函数为`call_frame_t`类型的对象创建了一个包含32个内存块的内存池。`call_frame_t`通常用于存储每次函数...

    函数调用中堆栈的个人理解共4页.pdf.zip

    2. **调用堆栈(Call Stack)**:在程序运行时,每个线程都有一个调用堆栈,记录了当前执行路径上的所有函数调用。每当一个函数被调用,一个新的栈帧(Stack Frame)会被创建,包含该函数的局部变量、参数和返回地址...

    调用堆栈的类

    CallStack(int max_frames = 30) : max_frames_(max_frames) {} void print() const; // 打印调用堆栈信息 private: std::vector<std::string> getStackTrace() const; // 获取堆栈信息 int max_frames_; // ...

    局部变量保存在栈中1

    每个进程都有一个调用栈(call stack),其中每个未完成的函数都对应一个栈帧(stack frame),栈帧包含局部变量和传递给被调函数的参数。栈从高地址开始,向低地址扩展,栈底存储高地址,栈顶存储低地址。 寄存器...

    linux栈分析.pdf

    1. 栈(Stack)的基本概念与原理: 栈是一种后进先出(Last In First Out,LIFO)的数据结构,常用于函数调用和局部变量的存储。在函数调用时,通常会有一个栈帧(Stack Frame)被创建来保存函数的执行上下文,包括...

    实验3 栈系统框架参考.zip

    这些信息被压入调用堆栈(Call Stack),形成一个“栈帧”(Stack Frame),作为后续函数返回的基础。在函数执行完毕后,其对应的栈帧被弹出,程序恢复到调用该函数之前的状态。这种机制使得程序能够正确地在多个...

    Linux下的堆栈以及各种栈

    在函数调用过程中,栈帧(Stack Frame)是非常重要的概念。每个函数调用都会在栈上创建一个栈帧,用于存储该函数的参数、局部变量、返回地址等信息。栈帧的典型结构如下: - **EBP(Extended Base Pointer)**: ...

Global site tag (gtag.js) - Google Analytics