我有一个在 Oracle OCCAS 服务器中运行的 servlet。目前,我使用@Entity 注释将数据库中的一些数据映射到我的应用程序中的实体类。不过,我无法注入 EntityManager (@PersistenceContext),据我了解,这是因为它在我的 servlet 上下文中运行,而不是作为单独的实体 EJB 运行。但是,通过 EntityManagerFactory 创建管理器是可行的,所以这就是我目前使用的。
现在,在多次重新启动应用程序后,我得到了 PermGen 空间不足的错误。我认为这与某种持久性有关。在我的 finalize 方法中有一个对 EntityManager.close() 的调用,但它从未出现在日志中。
这是一种糟糕的做事方式 - 我是否“需要”拥有一个单独的实体 Bean,或者我应该如何清理 EntityManager?