Buffers and Cached is memory used by the kernel to optimize access to slow access data, usually disks.

You can think of that as free memory, but you are much better while kernel have memory to use that way.

I wrote some software that update several thousands of files, and that was a slow process. Later, as that updates repeated, the Kernel allocated near 2GB of memory to cached, and the performance was really (I can't make enought enfase on that really) improved.

Memory in not something you may consider as enougth. It is only enougth if you can spare some to the kernel, it won't abuse it.