导读
自本篇博客起,我将整理一些面向对象的基本知识,从内存视角看代码在执行过程中内存中的变化状态。 前几篇博客将写一些不太深入的,比较基础的知识,后几篇博客将会从java虚拟机角度来详细分析类加载以及对象生命周期过程中内存的变化。深刻理解内存,是学好面向对象的基石。
简单分析类加载和初始化
内存的基本结构
各个区域的作用
代码区:存放CPU执行的机器指令或加载到代码区中的二进制类文件等。代码区是可共享,并且是只读的。
数据区:常量区和静态数据区(全局变量和静态变量[static声明]),存放类成员的属性值。
堆区: 存放对象。(对象就是一小块存储空间,实际上存储的内容包括类成员的属性和方法的地址)
栈区: 在程序运行过程中由编译器实时自动分配和释放,存放进程入口地址,临时存放:对象地址、函数的参数值、返回值和局部变量。
总结:分析代码或者看一些技术内容,站在内存角度看问题,才会有更直观的感受,其实计算机的理论
知识是站在物理硬件运行原理和规律总结出的,再加以丰富,成为一种实用性,可理解性的知识。大学时学
习过模拟电路,数字电路,单片机,汇编语言等,硬件的运行原理也只是明白一个大致过程。 总之,我很认
同马士兵曾经说过的一句话:理解了内存就理解了一切!
了解的知识有限,难免有不完善的地方,还望各位在评论中提出建议,帮助我提高。