Java is veeery slooooow and not all of us want to install a bulky interpreter and then launch it every time we want to use the app that generally disappoints.
Loading the interpreter is the only slow part, some code is faster in Java than C++ (notable recursive methods) and most code comes close in performance, and some arithmetic are faster in C++, while others are slower in C & C++
JIT can optimize code while the program is running, C++ can't, the future is in JIT interpreters...
See this for some info on the topic:
http://en.wikipedia.org/wiki/Java_performance
There is nothing wrong with C++. There are lots of applications you would not be able to write as effectively in other languages but C++ can handle anything. Memory leaks are usually the result of bad programming practices, i.e. either doing what you shouldn't do or not doing what you should do. There are also ways to completely eliminate memory leaks using container classes. If something is not included in the STL it's generally application or platform specific and there are 3rd party libraries available if you really look for them.
Before programming in C++ I would have agreed, but the programs my team wrote was 100% OO with classes throughout and design patterns from start to finish. The program was quite big and it's quite impossible to catch them all, also XML isn't included in STL and it's not platform specific. Furthermore certain notable data structures are missing from STL, and data structures aren't platform specific either (rare cases might be partially platform specific such as B-Tree's that store data on the hard drive), those being Arraylists & Binary Search Tree's, both are used frequently, esp. Array List's.
Concerning memory leaks, well the only way to prove no memory leaks exist is by running all possible code paths of a program through a memory leak tester in a sandbox environment (I only know about Valgrind because it is a very powerful memory leak tester for Linux and it's free).
Many programs available today have memory leaks although small they are there (Firefox, most games, Oblivion,etc.), and I've heard the argument that "good programming" leads to no memory leaks but that saying was invented by Windows programmers who never memory leak test their programs and because it hasn't crashed because of a memory leak they assume there aren't any. Going without memory leak testers and assuming your code is safe in this day and age is indicative of a bad programmer.
The problem we experienced was although we used classes throughout there are memory leaks *somewhere*, but how do you know it's in your own classes VS. libraries you used, one leak we found for example was because the documentation of another library very ambiguously stated there was cleanup after using the library (there were quite a few threads on the internet concerning the topic so we weren't the only ones who didn't understand exactly what the documentation was trying to say).
Memory leaks ALWAYS creep up and it's a bitch to track them down, that's what I'm trying to say, C++ in my opinion = lower productivity.