大佬教程收集整理的这篇文章主要介绍了排除 Java 文件中的元素,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对垃圾收集器以及如何在 Java 中清除内存有一些疑问。
我有一个将二叉搜索树写入文件的程序,我制作了一个插入元素的函数和另一个删除元素的函数,但是在删除的方法中,我将删除的元素放在了我称之为“空块”的文件(这是一个堆栈)。在 C 语言中有一种方法可以释放 free()
的内存,在 Java 中有一种由 Java 自行决定的垃圾收集器。如何释放文件中这些块的内存(元素除外)。
有没有办法在 Java 中释放文件中元素的内存(元素类型为 int)?
我将我删除的元素放在文件中的一个空格中,我称之为“空块”(这是一个堆栈)
用于跟踪数据的任何数据结构都将位于某个类的对象中。
当该对象不再有任何指向它的引用时,该对象将成为垃圾回收的候选对象。您无需做任何事情,只需不要长时间使用任何参考资料。
垃圾收集器可以立即清除不需要的对象,也可以稍后清除。无论哪种方式,我们作为 Java 程序员都不关心。最终将释放内存。
static
,你应该显式赋值null
,让被引用的对象变成垃圾。在 Java 中,static
变量在应用的整个执行运行期间都保留在内存中。在前两种情况下,您可以通过将引用变量设置为 null
来更快地释放对象。通常这不是必需的,但如果大量内存处于危险之中,这样做可能是明智的。如果其他宝贵资源被不必要地持有,同样如此。
有没有办法在 Java 中释放文件中元素的内存(元素类型为 int)?
你的问题真的很难理解,但我认为你问的是释放数据结构中的磁盘块存储在文件中1.
对此没有 Java 支持。如果您将数据结构写入文件,回收文件空间的问题是您的问题,而不是 Java 的问题。事实上,我认为典型的操作系统不会允许您(字面意思)释放文件中间的磁盘块2。
可能有第三方库支持这种东西,但我没有背景知识来推荐。
如果我正确理解了您的要求,那么您对 C 的 malloc / free 与 Java 的垃圾收集的讨论仅与外围相关。这两种方案都是用于管理内存,而不是随机访问文件中的空间。现在您可以想象实现类似的方案来管理文件中的空间,但您需要考虑内存和磁盘 I/O 的不同特性。 (即使您将文件映射到内存中。)
1 - 如果您实际上是在谈论在 Java 中管理堆内存中的对象,那么最好的办法就是让垃圾收集器处理它;见Basil's answer。还有用于在堆外内存中存储对象的 3rd-party 库,但尚不清楚它们是否对您有帮助。我知道这样的库通常让程序员来决定何时释放一个对象。 (它们不是垃圾收集的。)
2 - 这将是一个坏主意。如果这样释放的磁盘块随后用于不同的文件,则会产生大量文件碎片。这对文件 I/O 性能不利。
以上是大佬教程为你收集整理的排除 Java 文件中的元素全部内容,希望文章能够帮你解决排除 Java 文件中的元素所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。