网站建设问题整改报告,福建建筑人才网查档案,郑州网站,网站建设 福步 2018看了下#xff0c;上次学习android还是17年的事情#xff0c;#xff0c;#xff0c;#xff0c;两年过去了我现在终于来搞android了。。。 以下内容参考自#xff1a;《Android从学习到产品》#xff0c;《深入理解java虚拟机》#xff0c;《操作系统之哲学原理》 先甩…看了下上次学习android还是17年的事情两年过去了我现在终于来搞android了。。。 以下内容参考自《Android从学习到产品》《深入理解java虚拟机》《操作系统之哲学原理》 先甩一部分定义 1.每一个Activity都可以启动另一个Activity来完成不同的动作每一次一个Activity启动前一个Activity就停止了但是系统保留一个Activity在一个栈上Back stack。当一个新的Activity启动时它会被推送到栈顶取得用户焦点。Back Stack 符合简单的“后进先出”原则所以当用户完成当前Activity后单击Back按钮它会被弹出栈并且被摧毁然后之前的Activity恢复。 这里延申一下猜测没有看过具体的Android底层不确定是不是准确的这个Activity存储的back stack 应该是jvm中的VM Stack。 同步一下VM Stack是什么就要讨论jvm的运行java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域VM Stack是其中一个区域。 VM Stack java virtual machine stacks是线程私有的他的生命周期与线程相同。线程概念补充一下运行中的程序叫进程一个进程占有一段内存来执行这个程序一个进程我们可以拆分为多个线程多个线程使用同一段内存空间来协同工作完成进程。线程是进程里面的一个执行上下文或者执行序列。对于单核来说一个时间段只能handle一个线程多核可以有多个线程同时执行从而提高进程的执行速度 VM stack 描述的是java方法执行的内存模型每个方法执行的同时都会创建一个栈帧stack Frame用于存储局部变量表操作数栈动态链接方法出口等信息。每一个方法从调用直至执行完成的过程就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 那么对于Android来说内存泄漏的场景有1.Activity过多内存占满无法创建新的Activity对象2.多个Activity单例化后一直占据内存资源无法释放 具体怎么做的还没有头绪等开发完了再研究吧。转载于:https://www.cnblogs.com/zhizhiyin/p/11199246.html