ICode9

精准搜索请尝试: 精确搜索
  • jvm原理--------2.Java虚拟机运行时数据区2020-04-23 19:53:40

    这里我们先说句题外话,相信大家在面试中经常被问到介绍Java内存模型,我在面试别人时也会经常问这个问题。但是,往往都会令我比较尴尬,我还话音未落,面试者就会“背诵”一段(Java虚拟机是由堆、方法区、虚拟机栈,吧啦吧啦。。。),估计心里还一脸自豪的想幸好哥提前在网上搜过,早有准备。每每

  • 【Golang进阶】指针的详细讲解2020-04-15 22:51:36

    指针是一个代表着某个内存地址的值, 这个内存地址往往是在内存中存储的另一个变量的值的起始位置. Go语言对指针的支持介于Java语言和 C/C++ 语言之间, 它既没有像Java那样取消了代码对指针的直接操作的能力, 也避免了 C/C++ 中由于对指针的滥用而造成的安全和可靠性问题. 指针地

  • 什么是线程2020-03-17 16:08:17

    要想知道什么是线程,那就得先知道进程是什么,因为线程是存在于进程中的,它本身是不会独立存在的。进程是系统进行资源分配和调度的基本单位。线程与进程的关系,进程中至少存在一个线程,进程中的多个线程共享这个进程的资源。 在Java中,我们启动Main函数的时候就是启动了一个JVM的进程

  • 栈溢出(Stack Overflow)2020-03-16 21:58:03

    调用栈(Call Stack)描述的时函数之间的调用关系。它由多个栈帧(Stack Frame)组成,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量,因而不能再执行完毕后找到正确的返回地址,还很自地保证了不同函数间的局部变量互不相干——不同的函数对应着不同的栈帧。  

  • JVM中的内存管理2020-03-11 17:52:51

    摘要:本模块分为四个部分讲解,分别为(1)内存空间;(2)内存分配;(3)内存回收【重点】;(4)内存状况分析。   内存空间: 内存空间是指我们在运行Java程序时,Java源文件通过编译器产生字节码文件在JVM中的运行与存储情况。 内存空间从线程是否共享分为: 线程私有: 1)程序计数器 一块较小的空间,是当前线程

  • 栈帧2020-02-07 11:36:45

    栈帧栈帧调试示例StackFrame.cpp程序调试参考文献 栈帧 栈帧:栈帧就是利用EBP寄存器访问栈内局部变量、参数、函数返回地址等的手段。 栈帧结构: PUSH EBP //函数开始,将现在的EBP入栈进行保存 MOV EBP,ESP //保存当前ESP到EBP ...

  • JVM内存模型小结2020-02-06 10:01:16

    JVM运行时的数据区域划分图如下,该图是JVM内存模型最主要的内容。                                 从图中可以看出来,JVM将内存主要划分为五个部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区。这些被划分为用途不一的数据区域有着各自的特点,它们都有

  • 详细解析Java虚拟机的栈帧结构2020-01-14 13:04:13

    什么是栈帧? 正如大家所了解的,Java虚拟机的内存区域被划分为程序计数器、虚拟机栈、本地方法栈、堆和方法区。(什么?你还不知道,赶紧去看看《Java虚拟机内存结构及编码实战》)这次要介绍的栈帧(Stack Frame),就是Java虚拟机中的虚拟机栈(Virtual Machine Stack)的基本元素,它也是用于支持J

  • Java虚拟机-字节码执行引擎2019-12-22 17:54:50

    概述 Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,成为各种虚拟机执行引擎的统一外观(Facade)。不同的虚拟机引擎会包含两种执行模式,解释执行和编译执行。 运行时帧栈结构 栈帧(Stack Frame)支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(V

  • 执行流(指令流)的控制层级2019-10-24 11:03:57

    1、指令级(指令指针): 基础控制语句(if、switch)   2、单个栈帧级: 函数调用指令; 栈的逐帧增加和减少。   3、多个栈帧级: 异常处理; 多个栈帧的出栈与执行流的重新部署。   4、线程内上下文切换 协程:通过改变线程上下文改变线程执行流。   5、并发控制指令 内核级切换:cpu切换(线程)上

  • 栈溢出原理笔记(一)2019-10-14 20:01:14

    系统栈的工作原理1.内存的不同用途        简单来说,缓冲区溢出就是在大缓冲区的数据复制到小缓冲区中,由于没注意小缓冲区的边界,”撑爆“了小缓冲区。从而冲掉了小缓冲区相邻内存区域的数据。根据不同的操作系统,一个进程可能被分配到不同内存区域中去执行,但是不管什么样的系统,

  • 栈帧ebp,esp详解2019-09-17 12:42:37

    原文链接:https://blog.csdn.net/u011822516/article/details/20001765 栈帧%ebp,%esp详解   分类专栏: 汇编 首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当

  • 不像JVM的JVM2019-09-06 23:56:27

      1、面向对象 面向对象的思想:将功能封装到对象中,通过对象去实现 面向对象的目的:将复杂的事情简单化,将以前过程中的执行者变成了指挥者且符合现在人们的思考习惯 面向对象的三大特征: 封装:将对象的实现细节隐藏起来,通过公共的方法向外暴露该对象的功能 继承:子类继承了

  • C函数调用过程原理及函数栈帧分析(转)2019-09-01 09:01:36

    在x86的计算机系统中,内存空间中的栈主要用于保存函数的参数,返回值,返回地址,本地变量等。一切的函数调用都要将不同的数据、地址压入或者弹出栈。因此,为了更好地理解函数的调用,我们需要先来看看栈是怎么工作的。 栈是什么? 简单来说,栈是一种LIFO形式的数据结构,所有的数据都是后进先出

  • Python11 递归函数2019-08-21 22:54:43

    递归函数 理解:一个函数在内部调用自身本身,这个函数就是递归函数。 优点:递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。 递归函数实例: 阶乘: 代码: ``` # 阶乘 -递归函数实现 : 例3的阶乘: 1 * 1 * 2 * 3 def factorial(x

  • 函数栈桢概念2019-08-21 15:38:55

    stack frame 栈帧 (激活记录) 1.先要保护现场 2.讲参数按照调用约定放在被运行栈帧上,这样这个栈帧的栈顶指针就会发生改变 3.如果有必要,调用函数会配置一个栈指针,保存调用方希望保持不变的内容(寄存器值) 4.被调用函数为它可能需要的任何局部变量发配空间,需要栈帧栈顶向上(-操作)

  • 005、JVM的垃圾回收机制是用来干嘛的?为什么要垃圾回收?2019-08-03 13:00:37

    本文是个人内容总结,详细内容扫描二维码  1.前文回顾 脑子里一定要有一个会动的图: 1、启动一个线程执行业务代码(执行main方法就是开启一个main线程); 2、线程对应的程序计数器PC来记录程序执行到哪行字节码指令(线程与PC是1:1关系); 3、调用方法时会创建一个“栈帧”,放入线程对应的栈

  • JVM虚拟字节码执行2019-07-05 10:38:35

    栈帧: jvm为每个新创建的线程都分配一个堆栈(在虚拟机栈中)。堆栈以帧为单位保存线程的状态。jvm对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)

  • 十五:运行时栈帧结构2019-06-08 19:51:53

    栈帧( Stack frame) 用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)s的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在

  • IDA Pro常用基础操作(二)2019-06-08 15:48:16

    1、IDA Pro下断点 F2下断点 F9运行 变成红色 或右键 2、查看导入导出表   3、打开调试器窗口     4、视图窗口   5、查看数据段的字符串在代码段中的引用位置 函数可以利用交叉定位找到调用的地址. 字符串无法找到,可能调用的地址经过变化 6、CODE XREF 外部参照代

  • jvm内存分区2019-05-25 15:38:03

    java内存是由jvm进行管理的,其内存简易模型如下图: jvm管理的内存大体上可分为方法区、堆、程序计数器、线程栈、本地方法区这几部分。方法区:主要存放类的元信息(包括类的名称、修饰符、静态变量、final常量、属性信息、方法信息)。本区域全局共享。会被GC管理。加载类过多,需要内存

  • java2019-05-04 21:51:52

      栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入

  • JVM运行时数据区域2019-04-15 17:50:22

    上面已经聊过JVM是什么东东,也谈过了JVM内存的垃圾回收机制。这一篇博客我们来聊聊JVM运行时数据区域。 JVM运行时数据区域由5块部分组成,分别是堆,方法区,栈,本地方法栈,以及程序计数器组成。 可以根据内存是否线程共享划分成线程独享内存区域/线程共享内存区域。 我们从简单的部分开始

  • java内存模型(线程独占部分)2019-04-03 18:43:39

    线程独占部分 1、你了解Java的内存模型吗? 内存简介 有内核空间、用户空间(java是运行在用户空间上) 32位系统---》最大的访问内存大小是4G 62位系统---》最大的访问内存大小是512G 背景: 我都知道C语言下,通常将内存划分位数据段和代码段 数据段包括堆、栈、以及静态数据区   JVM内存

  • 揭开 asyncio 的神秘面纱(4) - 生成器原理2019-03-28 19:47:35

    前面文章有说道『协程和生成器最主要的特征:可以暂停执行和恢复执行』, 它另外一个隐含的意思:普通函数不能暂停和恢复执行。 我们来看一个调用普通函数的例子: def a(): print('hello, a') def main(): print('before call a') a() print('after call a') main(

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有