When you run the "free -m" command and get the below output, then you observe free memory section will be low value but comparatively buffers+cache value would be higher.
Now this is not a bad thing actually since your OS has reserved this memory to speed up your most used process by keeping them in the cache. But in case any new process is executed and your system is low on memory then these cache would be automatically released to make space for memory reservation of new processes.
[root@localhost]# free -m
total used free shared buffers cached
Mem: 2345 1234 1145 0 24 400
-/+ buffers/cache: 664 345
Swap: 4032 0 4032
if you want to clear or free cache/buffer memory then you need to run the below command.
[root@localhost]# echo 3 > /proc/sys/vm/drop_caches
These are the different values which you can use with the above command
echo 1 is clearing only page cache
[root@localhost]# echo 1 > /proc/sys/vm/drop_caches
echo 2 is to clear free dentries and inodes
[root@localhost]# echo 2 > /proc/sys/vm/drop_caches
echo 3 is clearing page cache, dentries and inodes
[root@localhost]# echo 3 > /proc/sys/vm/drop_caches
[root@localhost]# free -m
total used free shared buffers cached
Mem: 2345 1234 1145 0 24 400
-/+ buffers/cache: 664 345
Swap: 4032 0 4032
if you want to clear or free cache/buffer memory then you need to run the below command.
[root@localhost]# echo 3 > /proc/sys/vm/drop_caches
These are the different values which you can use with the above command
echo 1 is clearing only page cache
[root@localhost]# echo 1 > /proc/sys/vm/drop_caches
echo 2 is to clear free dentries and inodes
[root@localhost]# echo 2 > /proc/sys/vm/drop_caches
echo 3 is clearing page cache, dentries and inodes
[root@localhost]# echo 3 > /proc/sys/vm/drop_caches