

The problem was solved, the VM was running at 6M memory, and I was happy.

Then I downloaded the latest oracle ojcbc14.jar, where I'd read on some forums that they'd patched the memory leak, and the problem went away. So, as you said, I had a bottle neck hidden away in a class library, and there was nothing I could do about it. The TTCItem class was not being garbage collected, and a HUGE amount of memory (think everything sent over the wire from the database) was collecting. The memory leak turned out to be in Oracle's jdbc driver.
JPROFILER PRICE CODE
Originally, I'd bumped up the memory size on my VM to let the code run, because it was analysis code and didn't need to be super efficient until we moved it over to where the public could access it. Last week I was profiling my code that connected to a database and retrieved data over and over.

And just like low tech support, he probably knows more about the alternatives than you do. Its useless advice because thats not the question being asked. You're advise is as useful as the lowest of the low tech support, "Oh, thats your problem? Well, you should just probably quit everything you're doing, and re-invest from the ground up in some other product or technology." Please tell me people like you are not actually employed as programmers or programming project leads. He's not concerned about performance, hes concerned about RAM usage due to memory leaks due to programming bugs.
JPROFILER PRICE HOW TO
He's not asking about 'performance', hes asking about how to chase memory leaks via a profiler. If I invented something tonight which was faster than whatever you were using today, and yet you were running into memory leaks that required restarting or rebooting servers you run 24/7, and losing thousands of dollars by the minute, but were within reach of serving your current load if you could identify the leaks, would you turn off your servers until you finished rewriting your application in my language? Have you ever actually worked at a company in your life? My only minor gripe is that under some circumstances, the fastest CPU profiling option (unnoticeable impact on the running app) can give inaccurate results, in which case I have to use one of the two slower CPU profiling options, which are much, much slower-but that's certainly not particular to YourKit. For the record, I have no affiliation with them at all. Memory leaks are a snap to find using it's "compare snapshot", which lets you compare 2 snapshots and shows you what the difference is - memory leak is generally the difference if you capture your snapshots intelligently.Īnyway, I can't speak highly enough of the product. I've had 1 or 2 bugs since I've been using it (about 10 months), since I like to use the early release version for newer features, and both have been fixed within days, with a new build released within a week or so. It's not open-source, but they have a forum where they answer they questions extremely quickly. It is cheaper than most profilers - I got a deal on it for $125 a few months ago, which I is about 25% of the normal price, but it's still cheap at $499. All the java developers I've shown it to have been as impressed as I've been. YourKit is extremely easy to use thanks to a very intuitive interface. I use Eclipse, and the integration there adds a new 'Profile as' options that works just like the 'run as' and 'debug as' launch options. It takes about a minute to install, has optional integration (1-click) with Eclipse, IDEA, Netbeans. I give my most enthusiastic recommendation to YourKit. I own all the products mentioned but have to say YourKit is my current favorite. Their product Leakhunter can help you find memory leaks, but creates too much drag for prod usage.įinally if want something that combines elements of Mercury's inclusive approach of instrumentingĮverything and top talker summaries and with Wyles approach of watching for heap usage, GCs and so Hand instruments only the methods you want, but can drill down into things like JDBC and captureĮxecuted SQL. Mercury Interactive sells a product that instruments all methods,Īggregates method usage and gives you a "top talker" summary. While instrumenting methods to understand where in your stack trace time is being spent If you want to profile your code in a "production" situation, i.e. I use several tools depending on the application.įor step-through-your-code debugging nothing beats Jprobe, although perhaps a fellow slashdotter
