导航:首页 > 编程语言 > 堆栈java

堆栈java

发布时间:2023-12-05 20:27:49

① 如何理解java虚拟机栈

堆是堆(heap),栈是栈(stack),堆栈是栈。

栈中分配的是基本类型和自定义对象的引用。

堆中分配的是对象,也就是new出来的东西。 被所有线程共享。

方法区/静态区 存放的是类信息和static变量、常量。 被所有线程共享。

也可以这么理解:堆是用来存放对象的,栈是用来运行程序的。

堆:java的垃圾回收器会自动的回收这些不用的数据。缺点是由于要动态的分配内存,存储效率会比较的慢。

栈:栈的优势是存取效率比较快,仅次于寄存器,栈数据可以共享。但缺点是栈中的数据大小和生存期的固定的,缺乏灵活性。

一般每个方法的调用都会独立有一个栈来保存对象的引用变量,在方法返回后,栈会清空,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

以32位地址操作系统为例,一个进程可拥有的虚拟内存地址范围为0-2^32。分为两部分,一部分留给kernel使用(kernel virtual memory),剩下的是进程本身使用, 即图中的process virtual memory。

一个程序本质上都是由bss段、data段、text段三个组成的

bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。

在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。

text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载;而bss段不在可执行文件中,由系统初始化。

阅读全文

与堆栈java相关的资料

热点内容
文件领导签字在哪里 浏览:239
电脑保存文件是点哪里 浏览:689
word07图片框 浏览:359
跨境付app现在支持哪些国家 浏览:647
手机mid文件 浏览:929
华硕笔记本升级bios找不到文件 浏览:399
编程和电脑哪个更适合孩子 浏览:718
xls压缩文件怎么设置 浏览:423
微信眨眼小女孩 浏览:207
cad2010安装文件 浏览:379
编程上什么学 浏览:364
美版s7升级70移动4g 浏览:112
金融数据包含哪些 浏览:240
尼尔应用程序错误 浏览:157
淘特app如何助力 浏览:472
cad文件有木马 浏览:459
多页文件怎样改变字体 浏览:145
16灯摇摇棒的程序 浏览:705
作业成本相关数据哪里找 浏览:826
买鞋有什么推荐的app 浏览:239

友情链接