Java中如何为类成员函数分配内存

Java中如何为类成员函数分配内存,java,class,object,memory-management,Java,Class,Object,Memory Management,我发现了一个与我类似的问题: “类成员函数代码内存是一次分配还是每次对象实例化时分配?”,可以找到 但是这里的答案只谈到了C/C++的情况。如果我使用Java,谁能告诉我这个问题的答案吗?这不是一个简单的答案 当类被加载时,代码被加载一次,但是代码可以被内联到其他类的方法中(并且每次加载其他类时都被加载),并且类可以被垃圾收集,然后再重新加载,所以代码被再次加载 分配的许多方面也将取决于虚拟机的实现。答案与您的另一个问题基本相同,只是它更具动态性。对于最流行的Sun/Oracle VM:可执行代

我发现了一个与我类似的问题:

“类成员函数代码内存是一次分配还是每次对象实例化时分配?”,可以找到


但是这里的答案只谈到了C/C++的情况。如果我使用Java,谁能告诉我这个问题的答案吗?

这不是一个简单的答案

当类被加载时,代码被加载一次,但是代码可以被内联到其他类的方法中(并且每次加载其他类时都被加载),并且类可以被垃圾收集,然后再重新加载,所以代码被再次加载


分配的许多方面也将取决于虚拟机的实现。

答案与您的另一个问题基本相同,只是它更具动态性。对于最流行的Sun/Oracle VM:可执行代码由JIT(实时)编译器按需编译到代码缓存中,并由Hotspot编译器动态地进一步优化(例如内联)

当方法被称为方法指针时,方法变量引用和值作为上下文放置在堆栈上,然后执行代码缓存中的代码

类成员功能代码内存是分配一次还是每次分配一次 对象的实例化

每个类分配一次,而不是每个对象分配一次。准确地说,每个类/类加载器对分配一次。您可以认为它是由编译器分配的,只要您理解编译器包含JIT或HotSpot所做的任何事情