朝花夕拾内存拾遗
Posted andy-songwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朝花夕拾内存拾遗相关的知识,希望对你有一定的参考价值。
笔者从事Anroid开发有些年头了,深知掌握Anroid内存方面的知识的必要性,这是一个程序员必须修炼的内功。在面试中,它是面试官的挚爱,在工作中,它是代码质量的拦路虎,可见其重要性。在团队中,内存优化的工作又往往由经验丰富的老师傅来完成,可见要做好内存优化,不是一件容易的事情。
这方面涉及的知识比较多,分析起来也有一定的复杂性,笔者将通过一系列的文章来进行整理,将主要包括JVM,java内存管理,java垃圾回收,android内存管理,android内存优化技巧,android内存泄漏,常用内存分析工具等。由于笔者水平和经验有限,有不当之处,请不吝赐教。
该系列将由以下文章构成,每篇文章针对某一个点进行整理,当然,根据工作中遇到的实际情况,或深或浅,或繁或简。
【朝花夕拾】内存拾遗(一)—— 目录
【朝花夕拾】内存拾遗(二)—— JVM
【朝花夕拾】内存拾遗(三)—— java内存管理
【朝花夕拾】内存拾遗(四)—— java内存回收
【朝花夕拾】内存拾遗(五)—— Android内存管理
【朝花夕拾】内存拾遗(六)—— Android内存优化技巧
【朝花夕拾】内存拾遗(七)—— Android内存泄漏
【朝花夕拾】内存拾遗(八)—— Anroid常用内存分析工具
【朝花夕拾】内存拾遗(九)—— 总结
二、JVM
之所以在讲内存之前先介绍JVM,是因为JVM就像盘古一样开天辟地,在机器上开辟了一个虚拟的空间,然后才有了java生存的土壤。改系列文章的主角——内存就是JVM中的一部分。
1) 什么是JVM?
咱们这里借鉴百度百科的解释:
JVM是Java Virtual Machine 的缩写,即Java虚拟机,它是一种用于计算设备的规范,通过在实际的计算机上仿真模拟各种计算机功能来实现,可以简单理解为,它是一个在实际计算机中虚构出来的寄生计算机。Java源文件经过编译器编译成.class文件(字节码文件)后,由JVM来执行。JVM拥有一套支持java字节码文件(.class文件)执行的环境,可以将.class文件解释成具体平台上的机器指令并执行。Java程序只需要生成.class文件,即可以在任何装有JVM的设备上运行,而不需要理会具体操作系统平台相关的信息。此时的JVM就像一个翻译官一样连接连接着.class文件和系统平台。Java的这个特性叫做平台无关性,实现了“一次编译,到处运行”,JVM就是实现Java这个功能的大功臣。
2) JDK,JRE,JRM是什么关系?
JDK:Java Development Kit 的缩写,即 Java开发工具包,提供了开发java程序所需要的基本条件。上图为JDK的安装包,其中红色边框中
bin:最主要包含了编辑器javac.exe,功能是将java源文件编译为.class文件。
include:包含了Java和JVM交互用的头文件
lib:包含了ava开发所需的类库
jre:为Java运行环境
JRE:Java Runtime Environment的缩写,即Java运行环境,下图为JRE文件夹的内容。注意,JRE是运行环境,而不是开发环境。
bin:可以理解为JVM,其中javaw.exe和java.exe用于执行.class文件
lib:提供了JVM执行所需要的库
JVM:执行.class文件。
这三者的关系可以通过下图(摘自某网站)来理解:JDK包含了JRE,JRE又包含了JVM。图中提到的Java开发工具,集成有类库和编译工具,只需关联jre即可。
以上是关于朝花夕拾内存拾遗的主要内容,如果未能解决你的问题,请参考以下文章