The Solaris kernel operates on the assumption that "free memory is wasted memory". Pages used for file I/O will not be added to the free list unless they become unreferenced (i.e., the file they belong to is both closed and removed). Such pages are available for re-use but are kept as a disk cache. After some period of operation, Solaris will reach a point where all memory has been used in the past and freemem will be reported as a low number from that point on.
In Solaris 8 the filesystem cache was changed significantly; as a result of these changes, cached pages are now reported as free memory even though they still hold cached file data.