Most 32-bit
Java virtual machines have a maximum upper limit on RAM usage of somewhat less than 2GB. The Java heap always has a fixed maximum size somewhere up to that value.
In Sun's implementation, each object uses up about 16 bytes plus the size of its instance variables. So say you have a class like
class Foo { int x; double y; }
every Foo you create will take up 28 bytes. Therefore in 1GB, you could create about 35 million of these. Of course, the JVM itself uses some, and an array to hold those 35 million objects would itself take up 140 MB (4 bytes per reference, times 35 million references!)
Anyway, hopefully this will give you an idea of how to think about this kind of thing.