编程思想(管理内存和回收内存)

-- Java的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)也叫静态存储区。
 堆区:(存放所有new出来的对象;)
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

 栈区:(存放基本类型的变量数据和对象的应用,对象(new出来的对象)本身并不存在栈中,而是存放在堆中或者常
量池中(字符串常量对象存放在常量池中))
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象(比如int i=1中1就是基础类型的对象)和自定义对象的
引用(不是对象)而真实对象都存放在堆区中 
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

 常量池:存放基本类型常量和字符串常量。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量名,不是常量(它在堆栈中)。

-- 编程思想
 对象复用 代码耦合性太强,解耦。复用代码,复用内存。
 ui优化,为什么要优化,是因为卡顿了,渲染性能有问题。管理内存和回收内存。
 代码优化,为什么要优化,因为比较耗时,方法或类比较多 占用内存比较大
 
 复用,表面上是代码和ui复用,本质 或 更深层次的是内存的复用。软件的所有都归结为内存的操作 数据的交互。
内存回收与内存复用。时时刻刻都想着复用内存和释放内存。复用view对象,类似recyclerview原理。
 面向接口编程,面向抽象编程与面向对象编程。接口或抽象是面向对象的精髓之一。复用内存 回收内存。

 堆中存放对象 栈中存放数据 Java?

 弱网下如何优化;弱网下做?重连,底层是断包和丢包问题。
 android 什么都要与内存打交道。为什么复用view 及回收view,类似recyclerview机制。回收内存及复用内存。

 随时都要想着怎么回收内存和管理内存?
 对象持有了泄漏的对象,导致内存无法释放。

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/84102598
今日推荐