The amount of live data that is in the tenured generation is too large. Specifically, there is not enough free space in the tenured generation to support the rate of allocation into the tenured generation.
The libjit library implements Just-In-Time compilation functionality. Unlike other JIT’s, this one is designed to be independent of any particular virtual machine bytecode format or language. The hope is that Free Software projects can get a leg-up on proprietry VM vendors by using this library rather than spending large amounts of time writing their own JIT from scratch.This JIT is also designed to be portable to multiple architectures.
Most scaling and performance challenges are almost always related to the data layer, and are common across all language platforms. Even as a self-proclaimed PHP evangelist, I was very startled to find out that all of the theories I was subscribing to were true. There is simply no truth to the idea that Java is better than scripting languages at writing scalable web applications. I wonâ€™t go as far as to say that PHP is better than Java, because it is never that simple. However it just isnâ€™t true to say that PHP doesnâ€™t scale, and with the rise of Web 2.0, sites like Digg, Flickr, and even Jobby are proving that large scale applications can be rapidly built and maintained on-the-cheap, by one or two developers.
Let’s not confuse the Java runtime with the language itself, I’m sure one can write “scalable” apps in Logo as well as long as the deployment is horizontal.
The truth is the comparisons are bogus, Java and scripting languages are more complimentary than competitive. Now if/when Java runtimes will add support for dynamically typed languages (the ‘Invokeddynamic’ bytecode), we’ll probably see a noticeable rise in adoption of hosted (JRuby, Jython) scripting languages within the “enterprise”, as RAS and deployment issues will no longer be the (biggest?) stumbling blocks they are now.
An absolute cricial thing to developing a server application is throttling. Unfortunately this is not known to everyone who develops server apps. Especially when developing managed server apps, some people think that GC should just take care of that aspect not realizing that GC manages memory, not requests. If your machine has 2GB of memory and each request takes 1MB of memory, it canâ€™t handle more than 2048 requests concurrently. If you keep accepting requests as fast as they come in without any kind of throttling you will run out of memory when the number of requests exceeds what your machine can handle.