美文网首页
Android 面试之内存相关

Android 面试之内存相关

作者: 平头说人生 | 来源:发表于2018-05-19 13:03 被阅读1次

内存分成两种,一种叫做栈内存,一种叫做堆内存

栈是用于存放本地变量,内部临时变量以及有关上下文的内存区域。程序在调用函数时,操作系统会自动通过压栈和弹栈完成保存函数现场等操作,不需要程序员手动干预。

栈是一块连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的。能从栈获得的空间较小。如果申请的空间超过栈的剩余空间时,例如递归深度过深,将提示stackoverflow。

栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。

堆是用于存放除了栈里的东西之外所有其他东西的内存区域,当使用malloc和free时就是在操作堆中的内存。对于堆来说,释放工作由程序员控制,容易产生memory leak。

对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,永远都不可能有一个内存块从栈中间弹出。

Java中的new就是在申请堆内存,由java虚拟机自动垃圾回收器来管理

从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的

Stack:

Stack-1 Stack-2

Heap:

Heap-1

Example:

java内存是分为堆,栈和方法区。

堆中分配的是对象,也就是new出来的东西。

栈中分配的是基本类型和自定义对象的引用。

方法区存放的是类信息和static变量。

比如说你在方法里有一个String a=new String("123"),就会先在堆里创建一个“123”的对象,然后再把这个对象的引用放到栈里面。

再举个栗子(别的地方找的):

对于一个方法

Method-1 Explain-Method-1

垃圾回收:

自动垃圾回收机制就是寻找Java堆中的对象,并对对象进行分类判别,寻找出正在使用的对象和已经不会使用的对象,然后把那些不会使用的对象从堆上清除。

自动垃圾回收机制就是要解决三个问题:

引用计数法

对于第一个问题,也就是判断是否还需要使用,最简单的方法就是通过目前是否有引用指向这个对象,如果没有就说明这个对象不会再被使用了,如果有就说明这个对象可能还会继续被使用,这种通过引用是否存在的方法就叫做引用计数法,但这个方法存在一个问题就是无法解决对象循环引用的问题,因此又出现了可达性分析的方法来判断对象是否可以被会回收。

详情参考这篇文章:

https://blog.csdn.net/qq496013218/article/details/76968464

MAT使用参考这篇文章:

www.lightskystreet.com/2015/09/01/mat_usage/

相关文章

  • Android 内存泄漏总结

    Android 性能相关知识 Android性能之 内存泄漏总结 Android性能之 卡顿分析解决 Androi...

  • Android 面试之内存相关

    内存分成两种,一种叫做栈内存,一种叫做堆内存 栈是用于存放本地变量,内部临时变量以及有关上下文的内存区域。程序在调...

  • [Android]面试相关-内存泄露

    内存泄露在项目中很容易出现,但是只要细心就很容易找到,不过每一次的内存泄露查找都要耗费一定的时间,所以我们得明白什...

  • Suffering is the most powerful t

    Android面试相关 程序猿面试葵花宝典 Android面试题集 网易Android面试 乐视、美团,京东等面试...

  • Need Note Link

    Android 2.2 中文 Api 农民伯伯的博客 面试相关 面试相关1(内有干货链接)吧主 面试相关2(面试题...

  • iOS面试准备之思维导图(附资料)

    目录 1.UI视图相关面试问题 2.Runtime相关面试问题 3.内存管理相关面试问题 4.Block相关面试问...

  • 面试总结Android

    下面是啊最近几次面试总结:面试分类为三个方面 android相关 java相关 其他 Android相关 1.四大...

  • 关于Android内存泄漏的种种总结第二弹

    衔接上篇:新年过后献上关于Android内存泄漏的种种总结(顺手留下GitHub链接,需要获取相关面试等内容的可以...

  • ios 面试指南思维导图

    1.UI视图相关面试问题 2.Runtime相关面试问题 3.内存管理相关面试问题 4.Block相关面试问题 5...

  • Android内存相关

    简介 前段时间看了下老罗关于匿名共享内存(Ashmem)的文章,正好最近又碰到线上内存溢出的问题,把之前看过的文章...

网友评论

      本文标题:Android 面试之内存相关

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