首页 > 编程知识 正文

java默认栈大小(java堆和栈的区别和联系)

时间:2023-05-04 02:52:23 阅读:92410 作者:4696

通常,JVM的堆栈区域用于基本数据类型的变量、对对象的引用以及函数调用的实时存储。 用new关键字和构造函数创建的对象被放置在堆空间中,堆是垃圾收集器管理的主要区域。 由于目前的垃圾收集器采用了分代收集算法,堆空间细分为新生代和老生代,更具体地说,分为Eden、To Survivor (来源服务和目的服务)、Tenured; 方法空间和堆是每个线程共享的内存空间,用于存储由JVM加载的类信息、常量、静态变量和JIT编译器编译的代码等数据。 程序中的文字(literal )直接写入100、“hello”、常数等放入常数池中,常数池是方法区域的一部分。 堆栈区域运行最快,但堆栈很小。 通常,大量对象放置在堆空间中,堆栈和堆的大小可以通过JVM的启动参数进行调整。 如果没有堆栈空间,则会发生堆栈溢出错误,如果堆和常量池的空间不足,则会发生内存溢出错误。

补记1 :在较新版本的Java (来自Java 6的某个更新)中,由于JIT编译器的发展和“转义分析”技术的成熟,必须通过堆栈上的分配、标量替换等优化技术将对象分配到堆上

补充说明2 :运行时常量池相当于Class文件常量池是动态的。 在Java语言中,常数不需要只在编译时生成。 也可以在运行时将新常数放入池中。 String类的intern ) )方法就是这样的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。