zoukankan      html  css  js  c++  java
  • JVM中的堆和栈

    基本概念:

           基本数据类型:byte   short   int   long  char  float  double  boolean

           引用数据类型:类类型、接口类型和数组

    栈内存:

           程序在栈内存中运行;

           栈中存的是基本数据类型和堆中对象的引用;

           栈是运行时的单元;

           栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;

           一个线程一个独立的线程栈;

    堆内存:

            程序运行所需的大部分数据保存在栈内存中;

            堆中存的是对象;

            堆是存储的单元,堆是一块共享的内存;

            堆解决的是数据存储的问题,即数据怎么放,放在哪儿;

            所有线程共享堆内存;

    怎么理解堆栈?

    1、栈存储的信息都是跟当前线程(或程序)相关的信息。(局部变量、程序运行状态、方法、方法返回值),栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是在栈中,一个对象只对应一个4byte的引用(堆栈分离的好处)

    2、堆只负责存储对象信息

        平时报错java.lang.StackOverflowError异常及时因为栈中存储的数据比较多

    3、堆和栈中,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈,而堆是为栈进行数据存储服务的,堆是一块共享的内存。

      

  • 相关阅读:
    php基础设计模式(注册树模式、工厂模式、单列模式)
    微信公众平台实现获取用户OpenID的方法
    如何成为一名优秀的工程师(语义篇)
    操作系统死锁原因及必要条件
    Word中怎样删除分节符而不影响前节页面设置
    当代码变更遇上精准测试的总结
    Windows网络命令
    linux shell编程
    Oracle远程登录命令
    数据库别名AS区别
  • 原文地址:https://www.cnblogs.com/fei563786979/p/8691370.html
Copyright © 2011-2022 走看看