我只是想知道哪种语言在C,C ++和Java中有更好的内存管理,为什么会这样,它基于什么标准?
我知道Java使用垃圾收集来释放内存而C使用DMA功能。这会使java更好地进行内存管理,因为它是自动处理的吗?我不知道C ++所以我没有太多的想法,虽然我知道它使用析构函数和删除。
任何建议/想法都将受到赞赏。
答案 0 :(得分:4)
Java具有内存管理功能。 C和C ++没有,所以它的内存管理是程序员的功能。
答案 1 :(得分:2)
在我的书中有一个苹果到橙子的问题。 C / c ++没有内存管理,至少没有你工作的语言。这就是说java将为你所有的漫长的一天分配和销毁内存,但代价是控制。对于标准业务应用程序,这不是问题。您将以任何方式加载一些臃肿的第三方代码,但是当它重要时,您在c / c ++中拥有更多的权力。你也有足够的力量射击自己的脚。
答案 2 :(得分:1)
Java的问题在于,由于它自动执行垃圾收集,并且您只能诱导它发生,因此您无法在希望释放资源的时刻释放资源。优点是您不必担心遗留物品,因为从长远来看它们不会影响您的记忆(当然,只要您不保留对它们的引用)。
为了获得最佳的内存管理,我建议使用C或C ++,即使在这两者之间,我会说C ++因为它具有大量的功能。至于关于C和C ++之间的内存管理的特定论点,我不知道。 无论如何,它们允许您以更加可控和自定义的方式处理事物,这意味着您不能放松并忘记自己进行管理。
希望有所帮助。
答案 3 :(得分:1)
至于内部内存管理,Java拥有三者中最好的一个,因为它可以自动处理对象。
如果您的问题针对性能,那么C或C ++将是更好的选择。您必须自己完成所有内存管理,但同时不必等待垃圾收集器完成它的工作。
IMO一切都取决于你的方法:
如果要优化Application for Performance,请使用C或C ++。
如果您不想自己担心内存管理,请使用Java。
答案 4 :(得分:0)
Java和C#都有垃圾收集。这是一件好事,因为程序员在内存管理方面的问题较少,并且可以专注于其他问题。在C和C ++中,您必须手动管理内存 - 为此您需要很多时间,耐心和经验。 JVM的垃圾收集器足够快,因此您几乎感觉不到C ++程序的时间执行与Java程序之间的区别(C ++应该比java更快)。
答案 5 :(得分:0)
c和c ++中的程序员管理内存是用这些语言编写的程序中许多软件错误的根本原因。这是Java和C#等现代语言具有垃圾收集的主要原因之一。