Ahoy there! This is my personal blog which I use as my memory extension and a medium to share stuff that could be useful to others.

Have you provided your personal email account when registering on websites using email confirmation? Have you hesitated to provide comments on blogs, forums, etc. because of fear of having to provide your personal email address? Of course, you always have the option of registering a free email account just for this purpose, but this means you have yet another username/password pair to remember or require some time to create a fictional identity. Instead, how about using a temporary email address that requires no registration? That’s exactly what 10 Minute Mail offers!! It provides you with a temporary email address that is valid for 10 minutes (more than enough time to respond to email registrations). Beat the spam caused by various online registrations!

Well, I’ve now found that Disposable Email Addressing (DEA) has been around for some time and there are several DEA services on the web. Refer this blog post for 20 such disposable email services (Mailinator, MyTrashMail, etc.). Website admins are nowadays blocking registrations with temporary email addresses. Well, you can always try!

VN:F [1.6.5_908]
Rating: +1 (from 1 vote)

First and foremost, if feasible, please consider a Hotspot JVM upgrade. The 1.4.2 JVM is outdated and there have been several significant improvements to GC ergonomics in later Hotspot JVMs. The JDK 1.4.2 Standard edition reached its EOL in late 2008. However, you can purchase support for later updates of JDK 1.4.2 (later than 1.4.2_19) that are branded under Java For Business (JFB) v1.4.2, to receive security updates and critical fixes until 2013. With regards to CMS, Sun engineers were finding their feet with CMS in JVM 1.4.2, enhanced CMS and made it the default collector in JVMs 5 and 6 and are about to replace CMS with G1 (Generation First) in JVM 7.

For those of you still using the Concurrent Mark Sweep (CMS) garbage collector with Hotspot JVM 1.4.2, here’s some information which I hope you will find useful.

What is CMS garbage collector?

The Concurrent (actually mostly concurrent) Mark Sweep (CMS) garbage collector is a non-default old (tenured) generation garbage collector introduced in JVM 1.4 that manages a JVM’s heap by collecting garbage in the old (tenured) generation in a few phases, some of which are concurrent and the others which are stop-the-world. As a consequence of the concurrent phases, this collector minimizes GC pauses and hence is also referred to as the low pause collector.

When would you use the CMS Collector?

When you want to minimize GC pauses (frequent requirement for websites and interactive applications)

Does CMS require more cpu and memory than the default collectors?

Yes. You need adequate CPU resources (multiple processors) as CMS adds CPU overhead by using a background thread for the concurrent phases. You need adequate memory to allocate slightly larger heaps than you would for the default collectors, as objects will continue to enter the old generation during the mostly concurrent phases.

How do you enable the CMS Collector?

Use the JVM flag -XX:+UseConcMarkSweepGC. When you do this, -XX:+UseParNewGC is implicitly used. However, you may explicitly specify -XX:+UseParNewGC if you wish (but it’s just redundant).

Note: You cannot use the default collector or the parallel scavenge collector (-XX:+UseParallelGC) in the Young Generation when using CMS in the old generation. CMS is tightly coupled with ParNewGC in the young generation. ParNewGC is an enhanced version of the parallel scavenge collector that enables GC to be done in the young generation while CMS is in progress in the old generation.

 Does the CMS Collector require tuning?

You’re lucky if the CMS collector gives you optimal performance by just enabling it with -XX:+UseConcMarkSweepGC. Every Hotspot 1.4.2 JVM I’ve come across (enterprise systems), has required some CMS tuning for optimal performance. Of course, this requirement entirely depends on your application’s object profile. But, if tuning your Hotspot 1.4.2 is required, then tuning CMS requires more effort than tuning the default collectors and CMS has a bunch of JVM flags to play around with. Some important JVM flags to consider when tuning CMS are given below:

What do you need to watch out for when using CMS (problems/gotchas)?

  • The dreaded concurrent mode failure – a failure which occurs when CMS’ concurrent GC phases are interrupted for certain reasons and a Serial, Mark-Sweep-Compact GC is required.
  • Default SurvivorRatio=1024 and Default MaxTenuringThreshold=0. Note that these are default values only when using CMS with JVM 1.4.2 and can trouble you if you’re tuning your JVM for short-lived objects. If your application creates mostly short-lived objects and you wish to use the Young Generation as a filter to retain these objects as long as possible and clean them up with minor GCs (parallel scavenges) to reduce the pressure on the CMS collector, then you must change these default values as these default values ensure that the survivor spaces are not used. Refer this article to understand the peculiarities of MaxTenuringThreshold.
  • The value set by –XX:CMSInitiatingOccupancyFraction is used as same threshold for both old and permanent generation occupancies. i.e. CMS GC will be initiated in the old and permanent generations when either one of or both the old and permanent generation occupancy exceeds the value of CMSInitiatingOccupancyFraction. This is inconvenient and it implies that you must pay close attention to permanent generation occupancy also and size the permanent generation appropriately.
  • The -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled JVM flags could increase remark pauses, but can contain permanent generation growth (prevent OutOfMemory errors caused by a full permanent generation) and protect against poor GC in old generation (objects in the old generation that are referenced by classes in the permanent generation will not be collected until the classes in the permanent generation are collected).

What tools are available to assist you with JVM tuning?

First and foremost, before tuning your 1.4.2 JVM, ensure you profile your application and resolve application issues (e.g. memory leak). To tune your JVM, you have tools which broadly fall under two categories:

Runtime Monitoring: These tools attach to your JVM to provide loads of runtime data. These tools are useful, when you’re monitoring your JVM in runtime and using these tools interactively. An excellent tool is VisualVM and its VisualGC plugin. A screenshot of the VisualGC plugin is given below:

VisualVM_VisualGC

GC Log File Analysis: These tools enable you to do offline analysis of GC log files and prepare reports for trend analysis. If you wish to run a load test for a couple of hours and measure performance after the test, then you will need to capture GC logfiles and analyze them with such tools. Now, in this area, Sun has been lacking good tools. HP chose a wise strategy of defining a specific format for GC logfiles generated by HP JDKs and developing the excellent HPjmeter to parse the logfiles and create fancy charts along with several metrics. Well, the Sun forums indicate that a GCHisto plugin is being developed to analyze Hotspot GC log files. I have tried out this plugin (beta) and found it to be nowhere as comprehensive and sophisticated as HPjmeter. Well, will wait for GCHisto to be completed and plugged into VisualVM before trying it out again.

In order to assist my colleagues and me with Hotspot JVM 1.4.2 GC log file analysis when using CMS, I’ve developed a quick-and-dirty korn shell script to provide a summary of some key GC metrics for a specific GC logfile. You may download the script CMSGCStats.ksh and execute it without arguments (ksh CMSGCStats.ksh) for usage tips. Refer a sample screenshot of the script’s output below:

 

CMSGCStats

References:

(1) JVM 1.4.2 Garbage Collectors

 

COLLECTOR GENERATION JVM FLAGS TO TURN ON DESCRIPTION
Serial Young None. Default. Single-threaded, stop-the-world, copying collector
Parallel Scavenge Young -XX:+UseParallelGC Multi-threaded, stop-the-world, copying collector (not to be used with CMS)
ParNew Young -XX:+UseParNewGC

Multi-threaded, stop-the-world, copying collector to be used along with CMS. This option is automatically turned on when using CMS and doesn’t have to be explicitly specified.

Serial Old Old None. Default.

Single-threaded, stop-the-world, mark-sweep-compact collector

CMS Old -XX:+UseConcMarkSweepGC

Mostly concurrent low-pause collector that uses a background thread for the concurrent phases.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

It’s been a year since I bought an LCD TV (LG 32LB75) that is capable of accepting 1080p input (HD ready 1080p). However, I’ve only used my LCD TV for viewing SD TV and videos. Well, I’m not ready to invest in Blu-ray or Sky’s HD services now. I thought about trying upscaling (I know it can never be as good as true HD) options until I decide to go down the full HD route and had my eye on Oppo, but Oppo was beyond my budget. Then, while skimming through the electronic products section on Amazon, I came across the the Cyclone Micro HD HDMI 1080p Upscaling Multimedia Player Adaptor selling for around £25 and having rave reviews. So, I purchased the Cyclone Micro just before Christmas 2009. Images of the front and back covers of the Cyclone Micro packaging box are given below:

CycloneMicro_FrontCover   

CycloneMicro_BackCover

Being so cheap for what it claims to offer, I did not have much expectations from the Cyclone Micro. All I wanted was a quick, easy, cheap way of viewing my DivX and Xvid videos (purchased via Graboid). Well, I have been impressed so far. The Cyclone Micro is a little gadget (smaller then my BlackBerry) that has adequately met my requirement for playing Xvid video on my LCD TV. All I do is download an Xvid video via Graboid, store it on my 8 GB SanDisk USB Flashdrive, stick the flash drive into the Cyclone Micro, connect the Cyclone Micro to my LCD TV via a HDMI cable (only an AV cable comes with the Cyclone Micro, so you’ll need to purchase an HDMI cable separately if you don’t already have one), switch on the Cyclone Micro and select the HDMI Input source on my LCD TV. When done, the Cyclone Micro home menu is displayed on the screen. Using this menu, I select the video I wish to watch and voila! The Cyclone Micro comes with a nifty remote control, loaded with adequate controls like play, stop, forward, rewind, zoom and volume. You can also select your upscaling resolution. By default, the first movie played with my Cyclone Micro used DVD resolution. Then, when I selected 1080p as my default resolution, the video was noticeably different (higher quality). So, the Cyclone Micro does improve video quality with its upscaling (not out of this world, but great enough for such a cheap product!).

I haven’t experimented using my Cyclone Micro with other video, audio and picture formats, but so far, for my requirement of playing Xvid videos on my LCD TV, I believe that the Cyclone Micro has given me bang for my buck!

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

If you’re a movie buff and want quick and cheap (not free) access to loads of movies (even HD movies) and don’t want to risk torrents, then graboid video is well worth a try. I’ve registered for Gold Membership ($14.99 for a month allowing 50 GB of movie downloads) for a month to check it out. Graboid does not host any videos but link you to internet video sources that comply with the Digital Millenium Copyright Act (DMCA). As per the Graboid website, they’re legal (since they’re not hosting videos and allowing uploads). Also, I  couldn’t find any websites claiming that Graboid is illegal or that Graboid is in trouble with the MPAA and other relevant authorities.

Most of the videos (movies and TV shows) on Graboid are good quality Xvid videos, but Graboid also links you to HD videos (720p/1080p). You can either stream or download the videos.

So far, I’ve downloaded a few Xvid videos and watched them on my LCD TV using my Cylcone Micro – no issues and good audio/video quality. I’ve only had an issue with a 13 GB HD movie (1080p) download and the Graboid forums indicate that the long filename for that movie could be posing a problem (now liaising with Graboid support to give back my 13 GB bandwidth!).

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Some movies may be distributed in more than one file (e.g. more than one CD). Recently, I purchased a movie in Xvid format which consisted of two parts (two Xvid files). So, here’s how I joined the files to generate one Xvid file and viewed the entire movie in one go:

STEP 1: Download and install an Xvid codec

Xvid is a video codec library for the MPEG-4 standard. I downloaded an Xvid codec here.

 

STEP 2: Download and install (extract) VirtualDub

VirtualDub is a free video capture/processing software for Microsoft Windows. You may download VirtualDub here.

 

STEP 3: Start VirtualDub and load the video files

Start VirtualDub ( VirtualDub  ) and load the video files as follows:

To load the first video file, click File –> Open video file on the Menu bar or type CTRL + O.

To load the remaining files, add them one at a time by clicking File –> Append AVI segment on the Menu bar.

 

STEP 4: Configure Audio and Video settings

For video, click Video –> Direct stream copy on the Menu bar.

For audio, click Audio –> Direct stream copy on the Menu bar.

 

STEP 5: Save the joined video file

To save all video files as one joined file, click File –> Save as AVI on the Menu bar, choose a filename and save.

VN:F [1.6.5_908]
Rating: +5 (from 5 votes)

 Page 8 of 27  « First  ... « 6  7  8  9  10 » ...  Last »