一、对于程序员来说cpu是什么
1、程序是指示计算机每一步动作的一组指令,程序是由指令和数据构成的
2、cpu的工作就是解释和运行最终转换成机器语言的程序内容
二、内存和磁盘的亲密关系
1、计算机中的主要存储部件是内存和磁盘。磁盘中的存储程序,必须加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的
三、程序是在何种环境中运行的
1、运行环境=操作系统+硬件
2、机器语言的程序称为本地代码。程序员编写的高级语言称为源代码。通过对源代码进行编译,就可以得到本地代码。
3、Java:有两层含义,一是作为编程语言的java,另一个是作为程序运行环境的java,也是将java语法记述的源代码编译后运行。不过,编译后生成的并不是特定cpu使用的本地代码,而是名为字节代码的程序。字节代码的运行环境就称为java虚拟机,java虚拟机是一边把java字节代码逐一转换成本地代码一边运行的。
4、java虚拟机:从操作系统方面来看,java虚拟机就是一个应用,而从java应用方面来看,java虚拟机就是运行环境。其实不同的java虚拟机之间无法进行完成交换。这是因为,想让所有字节代码在任意Java虚拟机上都能运行时比较困难的。另一点就是运行速度问题,Java虚拟机每次运行时都要把字节代码转换成本地代码,这一机制是造成运行速度慢的原因。
四、程序加载时会产生栈和堆
1、当程序加载到内存后,除此之外还会额外生成两个组,那就是栈和堆。栈是用来存储函数内部临时使用的变量(局部变量),以及函数调用时所用到的参数的内存区域。堆是用来存储程序运行时的任意数据及对象的内存领域。
2、堆和栈的相同和不团之处。堆和栈有相似之处在于,他们的内存空间都是在程序运行时申请分配的。不过在内存使用上,二者存在些许的不同。栈中堆数据进行存储和舍弃(清理)的代码,是由编译器自动生成的。因此不需要程序员的参与。使用栈的内存空间,每当函数被调用时都会得到申请分配,并在函数处理完毕后自动释放。与此相对,堆的内存空间,则要根据程序员编写的程序,来明确进行申请分配或释放。
3、内存泄漏:如果没有在程序中明确释放堆的内存空间,那么即使在处理完毕后,该内存空间仍会一直残留。这个现象称为内存泄漏。