|
|
1
1
现在,用一点盐来处理这个问题,因为它来自内存,我找不到我的原始源,但是如果我正确地记住了,内存是按类分配的。 一旦加载了一个类,它就会将所有方法加载到内存中,即使它们还没有被执行。然后,如果您有该类的新实例,PHP将引用方法的原始类。不过,它将为成员分配自己的内存空间。注意,类和实例之间有区别。
上面将加载类foo,该类依次加载construct和bar方法(以及内置的其他方法)。然后,当您实例化它时,它不需要为方法分配空间,它只引用已经加载的方法。所以在我的例子中,
当然,在讨论私有方法/成员以及对实例的引用时,这会变得有点棘手。只需说,如果你担心那么多,那么PHP可能不是要使用的语言。 不确定是否有一种方法可以深入挖掘PHP代码来查看分配的内存,例如,您可以很容易地使用C。你可能要去低水平,才能回答你的具体情况下的问题。 |
|
|
2
3
一般来说,创建一个类的新实例并不会复制这些方法——一个类的所有实例都共享每个方法的一个副本,不管是否使用它。但是,根据语言的不同,将方法名链接到实际(共享)方法本身的表可能是共享的,也可能不是共享的——我不确定PHP在这里做什么。 |