JVM如何管理方法的内存?

问题描述

例如,我们有一个MyClass实例,它包含1个方法。此方法应保留在内存中。当对MyClass的此实例进行GC处理时,是否也删除了对该方法的引用?我想弄清楚通过Dependency Injection做所有事情(因此为每个类创建新的实例)需要更少的内存,并且更高效或更简单的Helper类以及大量的静态方法还是不错的。

解决方法

对象的实例方法存储在其类对象中(应该只存在一个副本),它们不会与每个新实例“复制”,相反,每个实例在内部都包含对驻留在其中的方法实现的引用类对象。 实例是垃圾收集而不是类数据。根据Java版本,类数据将存储在permgen空间或元空间中。 垃圾收集器专门在创建实例的堆上工作,而不是在permgen或元空间上工作。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...