2016 - 2024

感恩一路有你

java虚拟机最大内存不能超过多少g 如何准确理解Java中的堆与栈?

浏览量:1886 时间:2023-09-22 14:19:44 作者:采采

如何准确理解Java中的堆与栈?

谢邀!

Java运行时数据区中的栈有Java虚拟机栈和本地方法栈,全是用于方法的执行;堆主要用于贮放对象实例和数组。

Java虚拟机栈

每个Java方法想执行的时候都会创建战队一个栈帧,栈帧主要是用于存储局部变量表、操作数栈、动态链表和方法出口等信息,每个Java方法从就开始调用到执行结束的过程,都对应着一个栈帧在Java虚拟机栈中入栈到出栈的过程。在Java虚拟机规范中规定,假如线程请求的深度大于虚拟机所不允许的深度,将丢出StackOverflowError无比;假如虚拟机这个可以闪图扩充卡,但在扩展时再申请不了相当的内存,可以说丢出OutOfMemoryError无比。Java虚拟机栈的生存周期是跟随线程的,是线程国家所有制的。

本地方法栈

Java虚拟机栈是为不能执行Java方法.服务的,而本地方法栈是为先执行本地方法服务吧的,它的作用与Java虚拟机栈有几分相似,同时它也会甩出StackOverflowError异常和OutOfMemoryError极其。本地方法栈的生存周期又是带领线程的,也线程国家所有制的。

堆是Java虚拟机中内存空间最大的一块,基本所有的对象实例及数组都在这里分配内存空间,它是所有线程互相访问的区域。在Java虚拟机规范中,堆这个可以处于物理上不连续的内存空间,只要逻辑上尝试就行。当堆中没有相当内存分配时,而且此时也没能再储存,城就会丢出OutOfMemoryError无比。

一种是栈内存,一种是堆内存。堆是用处存放对象的,栈是为了运行程序的。

堆不需要按照fifth等来创建战队;栈内存的比较多作用是储存时基本都数据类型和语句变量。栈的内存管理是是从栈的后进先出模式来实现方法的。

栈另外一种数据结构,是一种不能在一端通过又开始直接插入和删除掉不能操作的特殊的线性表。它遵循后进先出的原则存储数据,先直接进入的数据被压入栈底,之后进入到的数据在栈顶,是需要读取数据的时候从栈顶又开始弹出数据(第一个进入的数据被另一个读进去)。

对于Macbook Pro来说,多大内存合适?

我的是14年的i7处理器500GB硬盘16GB内存。比较多从事外贸ios,web,python,php,产品经理等工作。下图是我我用4年左右的使用量,已清理过很多次啦。

所以才内存越大越好,买这种东西一定会最好不要差钱!

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。