I am currently porting a game to the 3300, 6200, 6610 and 6800 phones. The game currently works on a number of Sanyo, Samsung and Motorola devices. The JAR size is 63714 bytes. The JAD file is 309 bytes.
The 3300 SDK User Guide specifies 63720 bytes as a 'magic' JAR size limit. We have (barely) succeded in acheiving that. As far as I am aware, the S40 phones have a 200K heap size, as do the Samsung phones on which the game runs fine.
So, for the problem:
In the 7210 emulator, the app crashes out as it begins to load with a Java OutOfMemoryException. Similar situation on the device (6610) without the helpful exception message. In the S60b3 emulator with JAR size limits set to 63720 and heap size capped at 200K, it works fine. Perhaps the S60 emulator doesn't really apply those limits, but that wouldn't explain why this app works fine on similar spec Samsung phones, and runs out of memory on the 7210.
Is there a similar 'magic' number to heap size? Does 200K really mean 'somewhere around 195K'?