Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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块内存_C#_Java_Memory_Garbage Collection - Fatal编程技术网

C# java块内存

C# java块内存,c#,java,memory,garbage-collection,C#,Java,Memory,Garbage Collection,我有一个java程序,它使用弱hashmap来缓存一些东西,如果java需要更多内存,弱hashmap就会被清除。这对我来说很好。现在,我在同一台计算机上运行了一个c#程序,并识别出以下内容 当java程序运行时,我的c#程序在计算机压力很大的时候不能正确运行。另一方面,当java程序不运行时,我的c#程序也可以正常运行 是不是我的java程序阻塞了我的c#程序可以使用的内存?我怎样才能找到答案呢?您的Java程序将把堆扩展到给定的大小。垃圾收集将释放返回堆的可用空间的对象,但不会减少Java程

我有一个java程序,它使用弱hashmap来缓存一些东西,如果java需要更多内存,弱hashmap就会被清除。这对我来说很好。现在,我在同一台计算机上运行了一个c#程序,并识别出以下内容

当java程序运行时,我的c#程序在计算机压力很大的时候不能正确运行。另一方面,当java程序不运行时,我的c#程序也可以正常运行


是不是我的java程序阻塞了我的c#程序可以使用的内存?我怎样才能找到答案呢?

您的Java程序将把堆扩展到给定的大小。垃圾收集将释放返回堆的可用空间的对象,但不会减少Java程序使用的总体内存

使用你的操作系统CAPABAISEVE来研究C++和java应用程序消耗的内存。


您可以在JVM上使用命令行选项来控制Java的最大堆大小,从而限制它的饥饿程度。当然,如果您需要一个巨大的堆,那么很可能无法在一台机器上容纳所有内容。

您不能像为JVM堆设置最大限制那样为.net CLR堆设置最大限制。有关更多信息,请参阅。CLR只会尝试扩展其堆,直到达到操作系统强加的进程内存限制,或者机器的可用内存用完为止

是的,当您增加JVM堆大小时,您可以保留CLR将使用的内存。JVM将从下限开始,并在需要时扩展到上限。如上所述,该内存不会在JVM之外释放—它不会提供给.net CLR


不过,您需要进行更多的监控,看看内存是否真的是问题的原因。

您是否通过为java程序分配特定的堆大小来运行代码?我想您应该详细描述不正确的行为。听起来像是C#中的竞争条件。(注意,弱引用会尽快被清除。如果您正在实现缓存,请使用
SoftReference
并忽略
WeakHashMap
)您的C程序是否可能是多线程的?那么原因可能是在高负载下发生了竞争情况。使用了最大堆大小的jvm参数,程序不是多线程的,我可以排除死锁。这些参数都打开了,在.net/c#-环境中也可以使用这些参数吗?它不仅仅是打开的,但是他们设置了什么很重要——做数学,测量c#需要什么,再加上你的max for Java——它适合吗?当您的c#出现问题时,您是否看到内存耗尽?我是Java爱好者,恐怕我不知道如何控制c#。请阅读此链接和此链接