java - java中静态字段和方法如何占用内存?

标签 java

我在谷歌上搜索过。它说静态字段和方法是在编译时加载的。在我看来,编译是用来创建类文件,然后在执行时,创建线程,程序会占用内存。 “在编译时”是什么意思?是指创建类文件时? 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/

相关文章:

java - 找出 JOOQ 函数依赖哪些表

java - 通过 Socket 将字符串从 Java (PC) 发送到 C (Raspberry Pi)

java - 运行 jdbc 程序时线程 "main"java.sql.SQLException 中出现异常?

java - 获取包含垃圾数据的字符串的特定部分

java - android 编程 NameValuePair 为 api 23 删除

java - java中的骰子求和应用程序。我遇到索引错误并且我设计了错误的代码但我不知道在哪里

java - 无法在 Liferay 上注册 portlet

javascript - 如何将文件从 JavaScript 发送到 Java WebService

java - 在 Java 中加载 RSA 私钥(algid 解析错误,不是序列)

java - 扫描仪类没有这样的元素异常(exception)