Assume this scenario :
class A{
public static B b=new B();
}
Class B{
}
Since the static variable is related to the type of that class, not to an instance of the class, so what points to the memory address of the heap? Seems that there should be something related to the type A that refers to the variable b stored in heap.
with special thanks to @user2864740, I got my answer and edited my question to clarify my meaning:
when the type A is loaded by the runtime, it's structure contains all sorts of information needed for the runtime to be able to allocate new instances and also the space for the static fields, in this case b.
The runtime has put the static field (b) at some offset from the start of the type A's data. This is different for each static type referenced.