导航:首页 > 编程语言 > 堆栈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相关的资料

热点内容
浦发app怎么注销银行卡 浏览:525
编程和英语有什么区别 浏览:156
源代码交接清单 浏览:825
炉石应用程序异常 浏览:37
论文石油数据去哪个网站找 浏览:372
创造数据库的两种方式是什么 浏览:958
linux使用ss代理服务器 浏览:931
视易魔方机顶盒支持哪些文件 浏览:440
压缩文件付费解压 浏览:352
业务存期代码 浏览:770
把文件下到d盘找不到了 浏览:171
苹果手机有什么拍摄app软件推荐 浏览:673
网络次爪爪是什么意思 浏览:269
小学教的编程学的什么 浏览:178
cdrX9win10补丁 浏览:468
电视安装提示文件系统未挂载 浏览:723
excel读取文件中的字符串 浏览:397
手机文库下载的文件 浏览:700
怎么查网络的运营商的 浏览:127
win101607升级1703 浏览:225

友情链接