Java 垃圾收集器与池
我正在进行模拟,包括创建一棵树。 我的树的分支因子是2/3到7/8 每次需要展开时,我都会为子级分配一个数组。 我经常将一个分支作为新树(通过将根的子级设置为根),因此树的其余部分成为垃圾 我想知道是让垃圾收集器完成他的工作(我“建议”他在我更改树根时开始使用System.gc()进行收集)还是实现我自己的树节点池更好,当我更改树根时,回收所有现在无用的节点 答案可以理解为:android垃圾收集器是非常优化的,还是更倾向于限制对象的创建/销毁,即使这非常消耗?(我需要遍历所有树,并将每个无用节点附加到我池的堆栈中)Java 垃圾收集器与池,java,android,memory-management,garbage-collection,tree,Java,Android,Memory Management,Garbage Collection,Tree,我正在进行模拟,包括创建一棵树。 我的树的分支因子是2/3到7/8 每次需要展开时,我都会为子级分配一个数组。 我经常将一个分支作为新树(通过将根的子级设置为根),因此树的其余部分成为垃圾 我想知道是让垃圾收集器完成他的工作(我“建议”他在我更改树根时开始使用System.gc()进行收集)还是实现我自己的树节点池更好,当我更改树根时,回收所有现在无用的节点 答案可以理解为:android垃圾收集器是非常优化的,还是更倾向于限制对象的创建/销毁,即使这非常消耗?(我需要遍历所有树,并将每个无用节
我了解到android GC没有“进化”(它基本上在内存不足时运行)此外,我不知道删除对树根的所有引用是否会让GC在一次传递中垃圾收集所有树,或者只对节点进行GC,然后在下一次传递中对该节点的子节点进行GC,依此类推。首先,您需要了解GC是否是您的担忧。因此,请使用-verbosegc运行您的应用程序。如果您的GC报告性能问题或内存累积,您可以对此感到担忧。否则,就把它从你要做的事情中剔除 GC对代进行工作。基本上,您的分配分为几代。当应用程序加载时,所有分配都属于第0代。随着应用程序的发展,您的分配将进入第1代和第2代。GC在运行时在第0代上不像在第1代上那样经常工作。同样,它在第1代上的运行频率也不会像在第2代上那样高。这样做的前提是,加载时分配的对象不需要像以后创建的对象那样频繁地释放 有趣的引用自
- 在任何应用程序中,对象都可以根据其属性进行分类 生命线李>
- 有些对象是短期的,例如大多数局部对象 变量,有些是长寿命的,例如 应用程序李>
- 关于代际垃圾收集的想法是 理解到在应用程序中™s 在生命周期内,大多数实例化的对象都是短期的,而且 长寿对象与短命对象之间的连接很少吗 对象
- 在任何应用程序中,对象都可以根据其属性进行分类 生命线李>
- 有些对象是短期的,例如大多数局部对象 变量,有些是长寿命的,例如 应用程序李>
- 关于代际垃圾收集的想法是 理解到在应用程序中™s 在生命周期内,大多数实例化的对象都是短期的,而且 长寿对象与短命对象之间的连接很少吗 对象