Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何衡量C#和Java之间的内存使用差异?_Java_C#_Memory_Memory Management - Fatal编程技术网

如何衡量C#和Java之间的内存使用差异?

如何衡量C#和Java之间的内存使用差异?,java,c#,memory,memory-management,Java,C#,Memory,Memory Management,我想测量C#和Java中的应用程序在内存使用方面的差异。我的理论是,由于这两种语言非常相似,C#和Java之间,或者CLR和JVM之间的内存使用是相似的 然而,我想测试一下,并希望能发表一篇关于它的文章。在这两种环境之间测试内存的方法是什么?在测量它们时,我必须考虑哪些因素?(例如,虚拟机对内存使用有很大影响吗?我应该使用什么技术来测量内存?我应该编写一个没有框架的简单程序,还是包括一个像Spring这样的Web框架?) 所以,我想澄清一下:我不是在寻找意见,而是在寻找一种方法和正确的环境,来创

我想测量C#和Java中的应用程序在内存使用方面的差异。我的理论是,由于这两种语言非常相似,C#和Java之间,或者CLR和JVM之间的内存使用是相似的

然而,我想测试一下,并希望能发表一篇关于它的文章。在这两种环境之间测试内存的方法是什么?在测量它们时,我必须考虑哪些因素?(例如,虚拟机对内存使用有很大影响吗?我应该使用什么技术来测量内存?我应该编写一个没有框架的简单程序,还是包括一个像Spring这样的Web框架?)


所以,我想澄清一下:我不是在寻找意见,而是在寻找一种方法和正确的环境,来创建一个客观比较两个平台的测试。

对于windows,有一个工具叫做。这是一个非常低级的内存分析工具。可以将其附加到任何正在运行的进程中,因此您可以使用它分析.NET应用程序和Java应用程序

这也是新版本中提出的工具之一

另一方面,Linux平台并非如此直截了当


我希望这就是你所需要的。

我大体上同意你关于内存使用大致相等的假设。两者都编译成中间语言(字节码/MSIL),然后由运行时执行。两者都使用垃圾收集器。这也是一个大问题:在强制GC运行之后,是否需要内存占用?考虑到GC通常只在绝对必要的情况下运行,这会是一个有意义的测量吗?我认为这取决于您想要测试什么。包括像ASP.NET的Spring这样的框架,实际上您将测试框架,而不是语言本身。否则,创建大量类似的对象,并可能对它们进行一些计算。很高兴看到你能读到这篇文章,你好,克里斯托弗,谢谢,还有一些好问题。我考虑创建一个简单的应用程序,它只分配几百万个对象,并测量这些对象的内存使用情况。我不确定运行/强制GC是否真的有用。我可能会展示运行时清理内存的速度,但我不确定它是否展示了两者之间的效率。@OlegI我也这么认为。但我正在考虑一个更现实的用例,比如在容器中运行RESTAPI。也许是一个你好的世界,或者更多。谢谢你,这很有帮助。我将用Java和C#编写简单的程序,在Mac、Linux和Windows上运行,并在上面分享结果。像VMMap这样的工具看起来非常有用,但是在运行时中也有一些视图可能会更好,比如VM/CLR。谢谢分享,谢谢@ErikPragt很乐意帮忙!