Possible memory leak when starting session with lazy @Reference entity
Duplicate of #3513 for milestone 3.0.0
Describe the bug Metaspace keep increasing without dropping down after repeated query with a new session. I am not sure if this helps, but I found many $$ReferenceProxy in the heap.
To Reproduce Steps to reproduce the behavior:
-
Create an entity with @Reference like: @Reference(lazy = true, idOnly = true, ignoreMissing = true)
-
Query the entity repeatedly like:
FindOptions options = new FindOptions(); options.sort(Sort.descending("_id")); options.limit(1); for (int i = 0; i < loop; i++) { options.skip(i); Datastore ds = getMorphiaDatastore(); List<ClazzWithRef> tmp = new ArrayList<>(); try(MorphiaSession s = ds.startSession()){ Query<ClazzWithRef> q = s.find(ClazzWithRef, options).filter(); MorphiaCursor<ClazzWithRef> cursor = q.iterator(); //tmp = cursor.toList(); cursor.close(); } }
Expected behavior Metaspace should drop after GC
** Please complete the following information: **
- Server Version: 8.0.4
- Driver Version: 5.3.1
- Morphia Version: 2.5.0
Additional context Tested with entity with no @Reference is fine. Tested without starting a new session is also fine.