美文网首页
Java 堆/栈 GC相关

Java 堆/栈 GC相关

作者: 崽子猪 | 来源:发表于2019-05-26 18:44 被阅读0次

一、Java程序运行时的内存分配策略

    静态分配[静态存储区]/栈分配[栈区]/堆分配[堆区]

   1)静态存储区(方法区):主要存放静态数据、全局staic数据和常量

    2)栈区:方法体内的局部变量都在栈上创建

    3)堆区:通常就是指在程序运行时直接new出来的内存


二、栈内存/堆内存的区别

           ---------从内存分配角度---------

    在方法体内定义的(局部变量)一些基本类型的变量和对象的引用变量都是再方法的栈内存中分配的

    堆内存用来存放所有由new创建的对象(包括该对象其中的所有成员变量)和数组.在堆中分配的内存,将由Java垃圾回收器来自动管理


三、Java内存回收机制

Java内存回收机制流程图

四、Java内存泄漏引起的原因

内存泄漏指那些无用对象/不在使用的对象事实占用我们的内存,或者说无用对象内存得不到即使释放.从而造成内存空间的浪费.

长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏


五、总结

            

是一个运行时的数据区,

是由垃圾回收器来负责的.

是由动态分配内存的

存取速度慢

            

存取速度快

存在栈中的大小必须和我们的生命周期是绑定的,缺乏一定灵活性

相关文章

  • Java 堆/栈 GC相关

    一、Java程序运行时的内存分配策略 静态分配[静态存储区]/栈分配[栈区]/堆分配[堆区] 1)静态存储区...

  • JVM内存模型及GC算法

    一、内存模型 程序计数器、Java虚拟机栈、本地方法栈 方法区、堆 二、GC算法

  • 2019Android高级面试题汇总

    一、java面试题 (一) java基础面试知识点 说说java中堆、栈、方法区? 说说java GC原理? ja...

  • java面试题(一)

    1、System.gc()一定能够保证执行吗? 不能。 2、java中堆和栈的区别? jvm中堆和栈属于不同的内存...

  • 10.11java中的堆和栈

    java高级-堆和栈 java堆 /栈 栈内存 / 堆内存的区别 1. java堆 /栈 2. 栈内存 / 堆内存的区别

  • Java栈与栈上分配

    一. java栈: java栈是一块线程私有的内存空间。如果说,java堆和程序数据密切相关,那么java栈就是和...

  • JVM笔记

    JVM虚拟机 内存划分 线程私有:java方法栈,本地方法栈,程序计数器。 线程共享:堆,方法区。(需要GC垃圾回...

  • JAVA与JVM

    JVM(JAVA虚拟机) 虚拟机分为栈和堆: 堆:回收:堆是由GC来负责回收的。存储类型:主要存储对象、静态成员变...

  • JVM相关知识点

    1、java中的内存模型 gc内存模型:主要包括栈、堆、程序计数器,其中栈和程序计数器是线程私有的 1)栈:虚拟机...

  • JVM 性能调优

    原则:无监控不调优 内存和GC原理 JAVA内存结构 堆、栈、永久区、程序计数器 一般需要优化的内存区为 堆 ...

网友评论

      本文标题:Java 堆/栈 GC相关

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