简短的回答是,你不能,而你不需要.当需要时,GC将回收内存......并且没有理由干扰它.
我可以想到的唯一需要更快删除对象的情况是,当对象包含需要擦除的信息时......出于信息安全原因.(经典示例是当您处理用户提供的密码时,您担心它可能通过代码转储或其他东西泄漏)在这种情况下,您需要在对象上实现一个方法,通过覆盖来擦除对象的字段他们.但这需要精心设计; 例如,确保您找到并清除所有信息痕迹.
有时还需要"帮助"GC一点,以避免潜在的内存泄漏.一个典型的例子是ArrayList类,它使用Java数组来表示列表内容.该数组通常大于列表的逻辑大小,并且数组的元素可能包含指向已从列表中删除的对象的指针.该ArrayList课程通过分配null这些元素来处理这个问题.
请注意,这些示例都不涉及实际删除对象.在这两种情况下,问题/问题都以另一种方式解决.
值得注意的是,通话System.gc()通常是一个坏主意:
建议在生产代码中运行GC的唯一情况是,当您尝试管理GC暂停时,您知道在特定时间点可以接受暂停.(例如,当您在交互式游戏中更改关卡时...)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |