Hello,
120 k HashEntry instances don't seem too problematic - keep in mind that EhCache is used to keep some elements, which may be used often and may be expensive to fetch in memory to speed up the general application. The HashEntry instances are "just" data structure elements that make up the cache and depending on how many objects are maintained, they can quickly add up.
Are there any other suspect instance types in the report output? Usually, when there is a memory leak, you can drill it down to some type of complex Alfresco object which claims a lot of memory with just a limited amount of instances through containment.
Also, the PermGen is usually the least affected by leaked objects which reside on the Heap. PermGen is used for class objects, compiled code and internalized Strings. Not all memory analyzers are capable of investigating into PermGen errors. An example of what can eat up your PermGen are dynamically compiled JavaScript files used by the Rhino engine. To find out you need to obtain a list of loaded classes from your environment / memory dump.
1G is a very extreme PermGen - I usually make do with about 320 M (Repository-only Tomcat) even in long running systems.
Regards
Axel