8.黑马程序员-内存结构

来源:互联网 发布:淘宝香港站 编辑:程序博客网 时间:2024/05/22 10:59

------- android培训、java培训、期待与您交流! ----------

      1.内存结构
  • 为什么划分内存空间?因为各片内存空间处理方式不一样。比如栈内存数据用完 自动 释放,堆内存 的数据会在不确定的时间内被垃圾回收器回收。
  • java启动时在内存中开辟了5片空间
    • 栈内存:
      • 用于存储局部变量(方法中的变量,方法参数上的变量,for循环中的变量。)。
      • 当数据使用完,所占空间会自动释放。
      • 栈中的引用变量指向堆内存中的对象或数组。
    • 堆内存:
      • 存储数组和对象,通过new建立的实例都存放在堆内存中。
      • 每个实体都有内存地址值。
      • 实体中的变量都有默认初始化值。
      • 实体不在被使用,会在不确定的时间内被垃圾回收器回收。
    • 方法区:
      • 存储被虚拟机加载的类信息(类名、访问修饰符、字段描述、方法描述等)、常量、静态变量、即时编译器编译后的代码等数据。垃圾收集器主要是针对该区域的常量的回收和对类型的卸载。
      • 运行时常量池(属于方法区部分):存放编译期生成的各种字面量和符号引用。动态性:运行期间也可能将新的常量放入池中,如String类的intern()方法。
    • 本地方法区:
      • 本地方法栈,为虚拟机使用到的Native方法服务。---线程私有
    • 程序计数器:
      • 作用可以看成当前线程所执行的字节码的行号指示器。为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储。---线程私有
    2.配置参数:
    1. -Xnoclassgc  关闭类垃圾回收功能
    2. -Xincgc      开启类的垃圾回收功能
    3. –Xms<size>  设置JVM初始化堆内存大小
    4. –Xmx<size>  设置JVM最大的堆内存大小
    5. –Xss<size>   设置JVM栈内存大小
原创粉丝点击