473,394 Members | 1,802 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,394 software developers and data experts.

Java performance

So I work for a firm where Java performance is highly debated (e.g. threading, garbage collection, overuse of abstraction, interprocess latency, write once, debug everywhere, debuggers for real-time apps, etc). The C and C++ applications developed in-house are used for our real-time systems (high speed prop trading systems) based on high volume/low latency mulit-cast messaging. We do not have memory, latency, debugging issues, etc with these applications, honestly they have been solid. The in-house Java applications perform like crap in semi-real time on the same platforms using Sun Java 1.5.x and 1.6.x.

With the C and C++ applications, our developers addressed security, memory management and instrumention in the design from the start. The Java applications are a different story. My question is without saying hey put Solaris 10 and Dtrace on every server, how are other people here monitoring latency, handling garbage collection, instrumenting their code, tuning, etc without using O/S specific tools and code?

All of our applications run on Red Hat Linux 2.6.x kernel, on Solaris 9 and Solaris 10 x86 the Java applications are very problematic. Dtrace is beyond the comprehension of most of the Java developers and it makes absolutely no sense to replace Linux just to use Dtrace and get poor performance in return. The hardware base is a mix of Intel Xeon and AMD Opteron dual core processors, GbE, 16 GB min, 15K RPM HDDs, EMC fiber attached storage, high end network fabric, etc.

Before I start an O/S and H/W war, the question above is related to Java not the O/S, etc :)
Oct 5 '07 #1
4 1798
JosAH
11,448 Expert 8TB
Maybe the discussion should be about C/C++ programmers versus the Java
programmers in your company. While garbage collection can hinder true real
time applications it has relatively low impact on the performance of applications
nowadays. Maybe the real functionality of your Java applications are burried
in too many frameworks, technologies and what else.

kind regards,

Jos
Oct 5 '07 #2
You are correct about the many frameworks being used by various Java developers, the core messaging systems for the Java and C/C++ applications are the same products (Tibco and IBM MQ Series). In the world of C++ doing hello world using STL can use around 1,500 lines of code at compile time and I agree 'our' C/C++ developers are more aware of what design and coding shortcuts can do to the environments their applications are deployed.

Some of our lead Java developers like to find 'stuff' on the net for their projects and blindly plug it in to their code, without looking beyond simple JUnit test cases. It allows them to make short deadlines, which for some simple one-off applet may be fine. However on the server side these inefficiencies are leading to a purchasing more and bigger H/W to address the issue syndrome. This money is coming from our training and software budgets, which is hurting our teams longterm.

We have seen Java stall on mulitcore systems during full GCs using Sun Java 1.5 and 1.6. Which incurs large latency spikes, which then become slow consumer problems. My question is what methods, instrumentation and/or tools are real-time Java shops using to monitor, predict and triage applications? Either in-house techniques, Open Source or commercial options.

Before anyone thinks I'm fueling a C++ vs. Java war, I code in C/C++/Java/Perl and work in both groups here.

Thanks
Oct 5 '07 #3
JosAH
11,448 Expert 8TB
Maybe you should have your C/C++ developers talk with/to your Java developers.
Capable C/C++ developers are also aware of the rammifications of a garbage
collector keeping other code on a tight (speed) leash. Garbage collection isn't
a 'one size fits all' kind of thing that frees you from the responsibilities and the
awareness that memory is still a finite thing. Object pooling and all that can
keep the garbage collector from waking up and doing its dirty deeds; but it all
depends on your applications.

Before you resort to all sorts of testing, profiling, whatever tools; the wetware
between the developers' ears should know what this ugly world is all about: the
garbage collector is no free lunch ;-)

kind regards,

Jos
Oct 5 '07 #4
You guys should try out JRockit. The JRockit JVM incorporates a technology called the Deterministic GC which can guarantee an upper bound worst case pause time for the garbage collector.
Performance Analysis of the WebLogic Real Time 1.0 "Trader" Application

It's also possible to profile your application for latencies so you can find out the exact code line that caused the latency, and if it was I/O or lock related.The Mission Control 3.0 Latency Analyser
Nov 17 '07 #5

Sign in to post your reply or Sign up for a free account.

Similar topics

5
by: Zach | last post by:
This is all on linux using jdk1.3. My application is written in AWT, no swing. The application requires running it on the host machine and tunneling the GUI back to a client. I've been doing...
14
by: Wolfgang Keller | last post by:
Hello, as a non-developer I am currently participating in an industrial "research" project to develop a so-called "web application". This application serves at the same time as middleware to...
11
by: DrUg13 | last post by:
In java, this seems so easy. You need a new object Object test = new Object() gives me exactly what I want. could someone please help me understand the different ways to do the same thing in...
133
by: Gaurav | last post by:
http://www.sys-con.com/story/print.cfm?storyid=45250 Any comments? Thanks Gaurav
10
by: Alex Gerdemann | last post by:
Hello, I have spent a bunch of time converting a Java program I wrote to C++ in order to improve performance, and have found that it is not necessarily faster. Specifically, I'm writing a...
30
by: Mike Cox | last post by:
Hi. I recently ran a benchmark against two simple programs, one written in Java and the other in C++. The both accomplish the same thing, outputting "Hello World" on my screen. The C++ program...
2
by: Rafael Faria | last post by:
Hi All, We are starting a large data warehousing project using DB2 8.2 on AIX. There is a direction to move any new internal development to Java and a question was raised: Would it be a good...
2
by: Jobs | last post by:
Download the JAVA , .NET and SQL Server interview with answers Download the JAVA , .NET and SQL Server interview sheet and rate yourself. This will help you judge yourself are you really worth of...
2
by: sdanda | last post by:
Hi , Do you have any idea how to improve my java class performance while selecting and inserting data into DB using JDBC Connectivity ......... This has to work for more than 8,00,000...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.