Jan
One possible scenario I have seen multiple times is as follows :
- you have a huge row level lock table
- table is very active so getting a table lock is nearly impossible
- multiple users are generating #tables (temporary tables) by using a "select into" for rows from that huge table
High water mark thresholds are not get triggered and you get millions of locks in short time span.
If you run select * from monProcessActivity during that time you would see the SPID/KPID with high number of locks under the column LocksHeld.
We have a watchdog process to monitor and terminate any SPID grabbing more than one million locks.
HTH
Avinash