java 获取程序运行内存_Java程序运行的内存分配

Java的内存分配

A:栈 存储局部变量

B:堆 存储所有new出来的

C:方法区(程序代码及方法相关)

D:本地方法区(系统相关)

E:寄存器(CPU使用)

注意:

a:局部变量 在方法定义中或者方法声明上定义的变量。

b:栈内存和堆内存的区别

栈:数据使用完毕,就消失。

堆:每一个new出来的东西,且都有地址

每一个变量都有默认值

byte,short,int,long 0

float,double 0.0

char '\u0000'

boolean false

引用类型 null

数据使用完毕后,在垃圾回收器空闲的时候回收。

栈与堆的具体区别

堆和栈都是内存上的一快空间,

只是栈是先进后出的,就像一个长管子,只一边有留孔,向里面放东西,

先放入的在底部,后放入的在先放入的上面,要想拿出先放入的,要先拿出后放入的.由无需程序员管理,使用即可。

堆就象一块空地,可以随便放,和随便取.由程序员管理,用时申请,不用时要求手动释放(否则可能发生内存溢出)。

另外,栈的执行速度快,而堆的执行速度相比就慢了下来,因为他可以随时,随大小存取。

栈区内存,由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。访问顺序遵循先进后出原则。 栈stack:是程序启动时候由程序留出的工作内存区 比如程序的局部变量,函数调用等都是从栈中获取,这个内存在需要的时候分配,不需要就释放,由程序编译时确定栈区空间大小。

堆heap:是计算机空余的物理内存和硬盘空余空间的和。但是它的获取不是自动的了,相比从栈中分配内存要慢些。 使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。 使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。堆区空间是应用程序在运行的时候请求操作系统分配给自己内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值