jvm内存

作者: 丷羽丷 | 来源:发表于2016-10-05 20:15 被阅读0次
栈(Stack):先进后出

存放方法的局部变量的内存空间,每个方法都会分配一块空间Frame,方法一旦执行完成,Frame被销毁,对于原始类型,变量的值也保存在Stack里面,对于引用类型,Stack里面保存的是指向对象的内存地址(引用);

 它是线程私有的,生命周期与线程相同。
堆(leap):

存放Object
Java Heap是Java虚拟机所管理的内存中最大的一块,它是所有线程共享的一块内存区域。几乎所有的对象实例和数组都在这类分配内存。Java Heap是垃圾收集器管理的主要区域;
Java是传值得,不是传引用;

方法区

被所有线程共享区域,用于存放已被虚拟机加载的类信息,常量,静态变量等数据。被Java虚拟机描述为堆的一个逻辑部分。

栈与堆比较

栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程序如何执行;堆解决的是数据存储的问题,即数据怎么放、放在哪儿。在Java中一个线程就会相应有一个线程栈与之对应,因为不同的线程执行逻辑有所不同,因此需要一个独立的线程栈。而堆则是所有线程共享的。对象存放在堆中,对象引用和基本类型存放在栈中;对象的属性存放在堆中,对象的方法存在栈中。程序运行永远都是在栈中进行的,因而参数传递时,只存在传递基本类型和对象引用的问题。不会直接传对象本身。

  如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。
  如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出OutOfMemoryError异常。
GC(Garbage Collection)垃圾收集器

局部变量方法执行完后内存马上回收;
Heap里面的对象由GC自动回收;
GC维护和检测对象引用,引用数为0的对象会被回收;
GC并不是实时回收内存的;
可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

相关文章

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • 回顾JVM内存分配

    回顾JVM内存分配回顾JVM内存分配

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

  • 初见JVM内存区域

    初见JVM内存区域 JVM一个重要的机制就是自动内存管理机制,为了深入理解JVM的内存管理机制,了解JVM的内存...

  • JVM内存结构和Java内存模型

    最近看到两个比较容易混淆的概念:JVM内存结构和Java内存模型 JVM内存结构JVM内存结构或者说内存模型指的是...

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • Jvm堆内存和GC简介

    最近经常遇到jvm内存问题,觉得还是有必要整理下jvm内存的相关逻辑,这里只描述jvm堆内存,对外内存暂不阐述。 ...

  • JVM如何分配和回收堆外内存

    JVM内存模型 在JVM中内存被分成两大块,分别是堆内存和堆外内存,堆内存就是JVM使用的内存,而堆外内存就是非J...

  • JVM(七):JVM内存结构

    JVM(七):JVM内存结构 在前几节的文章我们多次讲到 Class 对象需要分配入 JVM 内存,并在 JVM ...

  • JVM内存结构

    以下信息摘录自:深入理解JVM的内存结构及GC机制 JVM内存管理 根据JVM规范,JVM把内存区域划分成了以下几...

网友评论

      本文标题:jvm内存

      本文链接:https://www.haomeiwen.com/subject/mjzsyttx.html