java启动不加xmx_面试必问-你了解Java虚拟机中堆和栈的区别吗?

首先看图有个大概的了解,Java运行时内存是如何划分的,本篇主要讲堆和栈

5bcb30c64c732bb60a4a8e1f5d53d67f.png

栈(Stack)分为:虚拟机栈和本地方法栈,我们一般说的栈就是虚拟机栈。

  1. 虚拟机栈随着方法运行创建,从方法运行到执行完成的过程对应着入栈和出栈的过程。
  2. 虚拟机栈线程私有,它的生命周期与线程相同。

虚拟机栈为虚拟机执行Java方法(字节码)服务,本地方法栈为虚拟机使用到的Native方法服务,两者发挥作用相似,在使用的语言,方式和数据结构层面也无区别。sun公司的HotSpot虚拟机就将这两个合二为一。

native方法在哪里会用到呢?

比如获取对象的哈希码(HashCode)就是用native方法

堆(Heap)是Java虚拟机中内存最大的一块。

  1. 在虚拟机启动时创建,被所有线程共享。
  2. 存放对象实例,但不是所有的对象都存放在堆中,如果不断的创建对象就会导致内存溢出。
  3. 常见异常:内存溢出,内存泄漏

小tips:我们在运行tomcat时会设置-Xmx和-Xms,这两个值就是在设置堆内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值