PermGen空间是否减少了?

Ade*_*ros 12 java hibernate

我想知道JVM是否通常卸载类以减少PermGen空间.所以我的问题在这里:

  1. Java类是否默认从JVM中卸载?
  2. 关闭Jar类加载器会从该jar中卸载所有加载的类吗?
  3. 应该使用哪些命令/方法来卸载类?

仅供参考,我确实在网上尝试了一些解决方案,但没有人回答我的问题.(例如:JVM标志CMSClassUnloadingEnabled实际上做了什么?)

PS:我指的是Java 6 + hibernate(类加载由hibernate处理)

Atr*_*opo 2

Hibernate 在启动时加载Entity内存中的所有类SessionFactory。另一方面,实体实例仅在需要时以Hibernate某种lazy方式加载。

GC当需要内存时,类可以被卸载JVM。实体实例也会被垃圾收集,但与任何其他对象一样,只有当不再有引用指向它们时才会被垃圾收集。换句话说,如果会话仍处于打开状态,Entity则无法卸载实例。Hibernate要卸载它们,您需要清除持久性上下文或关闭会话。