首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java块内存

java块内存
EN

Stack Overflow用户
提问于 2010-09-22 18:19:09
回答 2查看 148关注 0票数 2

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

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

会不会是我的java程序阻塞了c#程序可以使用的内存?我怎么才能知道这件事呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-22 18:30:47

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

使用您的操作系统功能来调查C++和Java应用程序所消耗的内存。

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

票数 2
EN

Stack Overflow用户

发布于 2010-09-22 19:58:01

您不能以与.net堆相同的方式为JVM的堆设置最大界限。有关详细信息,请参阅this question。CLR将简单地尝试扩展它的堆,直到它达到操作系统强加的进程内存限制,或者计算机的空闲内存用完。

所以,当你增加你的JVM堆大小时,你可以保留你的CLR会使用的内存。如果需要,JVM将从下限开始并扩展到上限。如上所述,该内存不是在JVM外部释放的-它不能用于.net CLR。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3768276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档