我在谷歌上搜索过。它说静态字段和方法是在编译时加载的。在我看来,编译是用来创建类文件,然后在执行时,创建线程,程序会占用内存。 “在编译时”是什么意思?是指创建类文件时? http://javarevisited.blogspot.com.au/2012/03/what-is-static-and-dynamic-binding-in.html这是网址。
最佳答案
It says the static field and method are loaded in compile time. In my mind, compiling is used to create the class file [...]
你是对的 - 这是一个错误的陈述:静态方法和字段在编译时解析;它们不可能在编译时加载,因为您的程序尚未运行。
它们的意思是,编译器决定在内存中引用静态项的位置,因此当加载程序时,无需额外计算即可完成对静态成员的访问。这称为静态绑定(bind)。
相反,对实例成员和实例方法的访问是在运行时决定的:实例字段在内存中的位置取决于实例的位置,而实例方法的位置取决于实例的类型。
关于java - java中静态字段和方法如何占用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23043743/