Hi all, finally I have found the cause of this problem.
But before I describe what caused it, I would like to make two suggestions: 1. Consider avoiding usage of String#toLowerCase() and String#toUpperCase() without specifying a Locale. Users running Hibernate on systems with Turkish as default locale may see unexpected results. In Turkish there are two lowercase letters \u0069 ‘i’ and \u0131 ‘ı’ (dotless ‘I’). And they are totally unrelated. Their uppercase versions are \u0130 ‘İ’ (capital letter ‘I’ with dot above it) and \u0049 ‘I’. So if you convert \u0049 ‘I’ to lower case and the system uses Turkish as default locale, you will get \u0131 ‘ı’ (dotless ‘I’) and not 'i', e.g. 'MY_COLUMN_I' would be converted to 'my_column_ı' and not 'my_column_i'. If you run Hibernate tests with Turkish as default locale some tests fail. I have for now no idea, what locale should be used instead of the default one. :-( 2. Do not use HashMap#clone(). If the JVM is started with the option -XX:+AggressiveOpts, the HashMap#clone() may produce memory leaks. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7042126. IMHO the copy-constructor should be as fast as #clone(). Now to the memory consumption problem. The problem was introduced with the fix of https://hibernate.onjira.com/browse/HHH-4546. Additional LockModes lead to increased memory consumption. When I comment the changes made by HHH-4546 in the method AbstractEntityPersister#createLoaders() out, I get nearly the same size for SessionFactoryImpl as it was in Hibernate 3.2.7 (see http://goo.gl/UB47c). I have created a small patch to solve/avoid this problem. It creates loaders lazily for some of LockModes (see http://goo.gl/wUn4w). With this changes the memory consumption of SessionFactoryImpl right after server startup drops from ca. 370MB to ca. 132MB (see http://goo.gl/GQw3p). What do you think about this changes? Btw it passes all tests. :-) One more thing: Could we have a property similar to "hibernate.listeners.envers.autoRegister" for Validator? I would like to disable Validator completely as it produces too much garbage (look at the pictures) when the application is deployed. Best regards Andrej Golovnin _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev