When we create an object with "new Thing()" the JVM finds the class description of Thing, allocates some memory for its variables and initializes any variables that need it. (The JVM does much more we can ignore right now.) So I guess you could say the "object instance" is that chunk of initialized memory. As you do things to the object you modify that chunk of memory.
An object reference is a very small thing that just points to the object instance in memory. You could have lots of references pointing to the same object. Let's make three to demonstrate:
Thing a = new Thing(); Thing b = a; Thing c = b;
I'd warn you not to parse these terms too literally when reading books and documentation. It's a very persnickity level of precision to make these words mean the same thing every time you see them. People are often a bit fast & loose with the distinction in casual writing.
Hope that helps!
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi