函数是否为同一对象的每个实例占用更多内存?
Does functions occupy more memory for each instance of the same object?
想象一下这种极端情况:
一个classCity
有10个变量,但是操作这些变量的函数和逻辑有1000行。
Class Person {
// 10 variables
int age = 20;
int height = 180;
String name = "Name";
.
.
.
// 1000 lines of functions and logic
public void increaseAge(int years){
age+=years;
}
public void doLogic(){
//some logic
}
.
.
.
}
我不知道这个class的一个实例究竟会占用多少内存,但假设变量占用10 bytes
,1000行函数占用1 kb
放一个样品量。
如果你有 100 个 class 的实例,重复 100 次的变量应该占用 10*100 bytes
但是函数会发生什么?这些函数会占用 1*100 kb
内存吗?或者编译器会做些什么来避免这种情况?
I don't know exactly how much memory will occupy a instance of this class, but let's say that the variables occupy 10 bytes and the 1000 lines of functions occupy 1 kb to put a sample amount.
此 class 的一个实例在此场景中将占用 10 个字节。 (这实际上是不可能的,因为 objects 有 headers 各种固定大小,根据 JVM 设置从 4 到 12 字节不等,即使这样它们也会四舍五入到 8 字节的倍数,但是重点是您只需为 class 的变量付费。)
内存中只存储了给定 class 的函数实现的一个副本。
想象一下这种极端情况:
一个classCity
有10个变量,但是操作这些变量的函数和逻辑有1000行。
Class Person {
// 10 variables
int age = 20;
int height = 180;
String name = "Name";
.
.
.
// 1000 lines of functions and logic
public void increaseAge(int years){
age+=years;
}
public void doLogic(){
//some logic
}
.
.
.
}
我不知道这个class的一个实例究竟会占用多少内存,但假设变量占用10 bytes
,1000行函数占用1 kb
放一个样品量。
如果你有 100 个 class 的实例,重复 100 次的变量应该占用 10*100 bytes
但是函数会发生什么?这些函数会占用 1*100 kb
内存吗?或者编译器会做些什么来避免这种情况?
I don't know exactly how much memory will occupy a instance of this class, but let's say that the variables occupy 10 bytes and the 1000 lines of functions occupy 1 kb to put a sample amount.
此 class 的一个实例在此场景中将占用 10 个字节。 (这实际上是不可能的,因为 objects 有 headers 各种固定大小,根据 JVM 设置从 4 到 12 字节不等,即使这样它们也会四舍五入到 8 字节的倍数,但是重点是您只需为 class 的变量付费。)
内存中只存储了给定 class 的函数实现的一个副本。