Java里的堆(heap)栈(stack)和方法区(method) 基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间...
分类:
其他好文 时间:
2015-02-06 00:33:16
阅读次数:
301
一:例子
{CSDN:CODE:595033}
输出结果:
Hachi
true
yellow
二:分析
Animal a = new Dog("Hachi","yellow");
栈空间中创建引用a,指向堆中new出来的子对象Dog("Hachi","yellow");
a的实质就是一只Dog,a instanceof Dog返回True
但是...
分类:
编程语言 时间:
2015-02-01 19:14:50
阅读次数:
215
1.Reentrant Function:可重入函数当捕捉到信号时,不论进程的主控制流程当前执行到哪儿,都会先跳到信号处理函数中执行,从信号处理函数返回后再继续执行主控制流程。信号处理函数是一个单独的控制流程,因为它和主控制流程是异步的,二者不存在调用和被调用的关系,并且使用不同的堆栈空间。使用小结...
分类:
其他好文 时间:
2015-01-31 14:28:27
阅读次数:
747
之前,在交换机(vxworks系统)测试的时候报了一个很诡异的问题:运行ospf路由协议的时候造成设备重启,而打印的break信息是在ripng模块死机。经过了多天的跟踪测试,终于发现是由于ospf任务中存在大量终端导致栈空间溢出进而修改了ripng模块的全局变量,后来把栈空间改大点就没问题了。但是这个问题是怎么发现的呢?在任务切换(vxworks是基于任务的)时加钩子函数,判断那个全局变量是否已...
分类:
其他好文 时间:
2015-01-22 15:39:55
阅读次数:
214
基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 。 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。局部变量 ne...
分类:
编程语言 时间:
2015-01-22 00:06:23
阅读次数:
187
进程和线程
进程:一个操作系统中执行的一个子程序,包含虚拟cpu,代码,数据 DOS
多进程:一个操作系统中执行的多个子程序,提高cpu的使用率
线程:在一个进程中同时执行的子程序流
多线程:在一个进程中同时执行的若干的子程序流
进程和线程的区别:
进程有独立的进程空间(存放数据),彼此之间是独立的
线程的堆空间是共享的,栈空间是独立的,而且线程占用的资源比较小,相互之间可以影响
...
分类:
编程语言 时间:
2015-01-20 20:39:56
阅读次数:
173
文章作者:Crack_Qs[4st][PDG]编译模式:Debug测试平台:Winodws 7 x64编译环境:Microsoft Visual Studio Ultimate 2013 (12.0.30723.00) Update 3关于x64论坛已有其他兄弟分析,我整理下自己的记录。非干货科普文...
分类:
其他好文 时间:
2015-01-07 14:27:09
阅读次数:
408
在进程中对于局部变量是怎么分配的,以及函数是怎么调用的其实也就是讲解栈区的具体使用过程。( 下面代码图摘要于网络)
首先,我们要知道,栈中存放的是一个个被调函数所对应的堆栈帧,当函数fun1被调用,则fun1的堆栈帧入栈,fun1返回时,fun1的堆栈帧出栈。什么是堆栈帧呢,堆栈帧其实就是保存被调函数返回时下一条执行指令的指针、主调函数的堆栈帧的指针、主调函数传递给被调函数的...
分类:
编程语言 时间:
2015-01-05 09:35:38
阅读次数:
144
CLR内存分配分三大块区域:栈、GC堆、大对象堆。一、线程堆栈(栈)用于分配值类型实例。栈由操作系统进行管理,不受GC管理,当值类型不在其作用域(主要是指其所在函数内)时,其所占栈空间自动释放。栈的执行效率是非常高的。二、GC堆(堆)用于分配小对象实例。所谓小对象就是大小小于85000字节的实例对象...
通过下面的代码得出了一个结论:
在windows操作系统中,栈空间不会释放,而是如果现有的栈空间满足函数的运行,则不再申请新的栈空间,但函数退出后也不释放栈空间;如果函数运行时占空间不够,则需要再申请新的空间;
使用malloc动态申请的空间因为位于堆空间,free后可以直接释放
#include
#include
int hello1()
{
int arra[...