jvm培训:jvm调优为什么要把堆和栈区分出来呢

首先,从软件设计的角度来看,堆栈代表处理逻辑,而堆代表数据。这种分离使处理逻辑更加清晰。分而治之的想法。隔离和模块化的想法反映在软件设计的各个方面。
  jvm培训

其次,堆和堆栈的分离允许堆的内容由多个堆栈共享(也可以理解为访问同一对象的多个线程)。这种共享的好处很多。一方面,这种共享提供了一种有效的数据交互方式(例如共享内存),另一方面,所有堆栈都可以访问堆中的共享常量和缓存,从而节省了空间。
  第三,由于运行时的需要(例如保存系统操作的上下文),需要将堆栈分为地址段。由于堆栈只能向上生长,因此限制了堆栈存储内容的能力。与堆不同,堆中的对象可以根据需要动态增长,因此,将堆栈和堆拆分可以使动态增长成为可能,并且堆中只有一个地址需要记录在相应的堆栈中。
  第四,面向对象是堆和堆栈的完美结合。实际上,面向对象程序与先前结构化的程序之间的执行没有区别。但是,面向对象的引入改变了对问题的思考方式,这更接近自然的思考方式。当我们反汇编对象时,您会发现对象的属性实际上是存储在堆中的数据。对象的行为(方法)是运行逻辑,该逻辑存储在堆栈中。编写对象时,实际上是编写数据结构和处理数据的逻辑。我不得不承认,面向对象的设计确实很漂亮。
  推荐阅读:jvm培训:如何判断哪些对象需要回收?
  如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1037935907,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值