This article explains that the problem is that each app on your machine will be allocated 4GB of address space - 2GB assigned to the app and a shared 2GB space assigned to the Kernel that all apps share.
Address space is only allocation in contiguous blocks, so if you need 1mb of space, it needs to find a contiguous 1mb space for you (as opposed to 2 500kb spaces). As you use this space, it becomes fragmented, and eventually you may find that there isn't enough contiguous space for your needs - it hints that this is more likely to be in the kernel space than in your app space.
Your fragmentation errors are likely to be because something is requiring a contiguous amount of address space which is greater than the largest block available.
Solutions: Er... none that I know of, or that I've read about. You really need to try and identify the culprit(s). If it is a 3rd party app, don't use it - if it is your application, make sure that when you use space you use it in smaller blocks, and make sure you don't have any leakage.
Not very helpful, I realise...
Another useful article...