java管理内存之 栈内存、堆内存(简单了解)、static(静态\修饰符)、主函数main参数
栈内存的特点:
栈内存存储的都是临时变量,变量一旦出了自己的作用域,那么马上会从内存中消失,释放内存空间。
栈内存(方法栈):
一个方法要运行的时候,jvm会在栈内存中开辟一片属于这个方法的空间,让这个方法在这片空间内执行。
堆内存的特点:
堆内存存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定期把垃圾对象回收,这时候该对象才会消失,释放内存。
对象:
对象如果没有变量引用了,那么该对象就是一个垃圾对象。
凡是以new关键字创建的对象,jvm都会在堆内存中开辟一个新的空间,创建一个新的空间创建一个新的对象。
方法区(数据共享区) static(静态\修饰符)
静态的成员变量只会在数据共享中维护一份,而非静态成员变量的数据会在每一个对象中都维护一份数据。
静态函数不能访问非静态的成员?
静态函数只要存在有对象,那么也可以访问非静态的数据。只是不能直接访问非静态数据。
举例:可以在静态函数内new 对象,从而实现静态函数调用非静态成员的访问方法。
主函数
mian:只是函数名,并不是关键字。只是jvm特殊识别的函数名
main:调用形式参数
cmd命令行:
java 类名 参数1 参数2 参数3
public void main(String [] args){
System.out.println(args.length); //3
}