The advantage of garbage collection is that it simulates a machine with an infinite amount of memory. The mechanism or implementation of that abstraction is intended to be completely transparent to you as the programmer. We all know that the mechanism is reclaiming memory that is no longer used by the program, but that's not actually guaranteed. If you run the program on a machine with more RAM than the program ever actually uses, then garbage collection may never happen. Again, irrelevant, because you can just write the program without regard to how it uses memory. The memory manager will just allocate more RAM whenever the program requests it, and you're allowed to assume that such allocations will always succeed. Java is a garbage-collected language, and C++ isn't.1
The disadvantage of garbage collection is that, like all abstractions, it tends to be leaky. It doesn't always work perfectly all of the time, particularly in edge cases, and you're likely to run into bugs. The people who wrote the garbage collection algorithm (the one that's supposed to be transparent to you as a programmer) optimized for the most common cases, and the trouble with common cases is that they're never all that common. In general, you can't do any better than the garbage collector can at managing memory. But in specific circumstances (and given a sufficient amount of time, energy, and understanding), it might be possible. C++ gives you this flexibility; Java doesn't.
All of that said, I think the standard advice for choosing a language applies here, perhaps even more so in this case given the constraints. Pick the language that is the most familiar to the primary developers for the project. In addition to the obvious reasons (like you'll be able to develop the app faster and more efficiently), this is particularly important in the case that you describe because programming C++ like you're programming Java is going to result in terribly ineffective memory management practices, and therefore leaks and crashes. Analogously, programming in Java like you're programming in C++ isn't going to do you much good, and may end up producing a less-than-optimized program, given that the garbage collection algorithms are tweaked and tuned for the most common cases.
Programmers that are used to working in garbage-collected languages learn to trust the garbage collector, rather than fighting against it. If you're working in a garbage-collected language, these are the programmers that you want on your project. Programmers who are not used to working in a garbage-collected language are inherently skeptical of such an "infinite memory" abstraction, and frequently with lots of good reasons. Good as these programmers may be, these are not the ones you want working in a garbage-collected language because they'll be fighting against the GC every step of the way, constantly second-guessing it and often producing slower, less memory-efficient code than the other type of programmer. At best, they'll just spend a lot of time reinventing the wheel, costing you a lot of money and even more in long-term maintenance costs.
And then you also need to ask yourself whether it really matters. There's more than a hint of truth to Bo's snide comment: memory is so cheap now, it's hardly worth too much hand-wringing. Even if you need massive amounts, those amounts aren't nearly as massive now as they were 10 years ago. Programmers and application development are far more expensive than just buying gobs of RAM and processing power. That doesn't mean that you should eschew economy where possible, but it does mean that you shouldn't waste too much time doing it, either.
1 Of course, this assumption highlights a deeper flaw in the question. As it turns out, "Java or C++" is a bit of a red herring. The standard Java implementation provides garbage collection and C++ doesn't per the language standard, but there's absolutely no reason that you couldn't use a third-party garbage collector for C++. Lots of companies have made a living selling these things, and some have probably made a living giving them away for free.