加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

详解JVM运行原理及Stack和Heap的实现过程

发布时间:2019-06-12 19:49:07 所属栏目:空间 来源:波波说运维
导读:副标题#e# 概述 因为线上系统遇到CPU100%的问题,这种问题在流量较大时比较常见,因为JDK自身有很多JVM调试工具,如jps、jstack、jmap、jhat、jstat等使用工具,在实际工作中使用这些工具进行调试是十分必要的,一般通过上面工具就能定位并解决CPU100%的问

2)为什么不把基本类型放堆中呢?因为其占用的空间一般是1~8个字节——需要空间比较少,而且因为是基本类型,所以不会出现动态增长的情况——长度固定,因此栈中存储就够了,如果把他存在堆中是没有什么意义的(还会浪费空间,后面说明)。可以这么说,基本类型和对象的引用都是存放在栈中,而且都是几个字节的一个数,因此在程序运行时,他们的处理方式是统一的。但是基本类型、对象引用和对象本身就有所区别了,因为一个是栈中的数据一个是堆中的数据。最常见的一个问题就是,Java中参数传递时的问题。

3)Java中的参数传递时传值呢?还是传引用?程序运行永远都是在栈中进行的,因而参数传递时,只存在传递基本类型和对象引用的问题。不会直接传对象本身。

Java在方法调用传递参数时,因为没有指针,所以它都是进行传值调用

PS:堆和栈中,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈。而堆是为栈进行数据存储服务,说白了堆就是一块共享的内存。不过,正是因为堆和栈的分离的思想,才使得Java的垃圾回收成为可能。

深入理解JVM原理对于我们平时调试问题还是很有帮助的,运维不仅仅是学一些Linux命令就可以的,如果要往深方面研究的话很多时候开发的东西要需要会一点的。

【编辑推荐】

  1. 程序员从宏观、微观角度浅析JVM虚拟机!
  2. 听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!
  3. 分布式系统Kafka和ES中,JVM内存越大越好吗?
  4. JVM 与 Linux 的内存关系详解
  5. Java后端开发三年,你不得不了解的JVM
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读