首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上使用太多内存的Java?

在Linux上使用太多内存的Java?
EN

Stack Overflow用户
提问于 2010-02-01 23:42:27
回答 5查看 2.6K关注 0票数 1

我正在测试java在Linux上使用的内存量。当启动一个完全不做任何事情的应用程序时,它已经报告11MB正在使用中。当在Windows机器上执行相同的操作时,大约使用了6MB。这些都是用top命令和windows任务管理器测量的。我在linux上使用的虚拟机是1.6__11虚拟机,hotspot虚拟机是Server11.2。使用-client启动应用程序不会有任何影响。

为什么java要占用这么多内存?我怎么才能减少这个呢?

编辑:我使用windows任务管理器测量内存,在Linux中打开终端并输入top。

另外,我只对如何减少这个或者我是否可以减少这个感兴趣。我会自己决定几个megs是不是很多。只是windows和Linux之间5MB的差异很奇怪,我想知道我是否也能在Linux上做到这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-01 23:55:03

如果你认为11MB的内存“太多”...你最好避免完全使用Java。说真的,JVM需要做相当多的事情(字节码验证器、GC、加载所有必要的类),并且在一个普通台式机有4 4GB的时代,保持非常低的基础JVM开销(和一般的内存使用)根本不是设计的优先事项。

如果您需要在嵌入式系统上运行您的应用程序(11MB可能被认为是“太多”的唯一情况),那么有一些special JVMs是为此类系统设计的,它们使用较少的内存-但代价是缺乏主流JVM的许多功能和/或性能。

票数 2
EN

Stack Overflow用户

发布于 2010-02-01 23:49:37

您可以控制堆大小,否则将使用默认值,java -X将向您解释这些开关的含义

i.g.

代码语言:javascript
复制
set JAVA_OPTS="-Xms6m -Xmx6m"
java ${JAVA_OPTS} MyClass
票数 1
EN

Stack Overflow用户

发布于 2010-02-02 00:19:13

你可能会问的问题是,“windows任务管理器和Linux top报告内存的方式是一样的吗?”我相信其他人能比我更好地回答这个问题,但我怀疑你可能不是在做苹果与苹果的比较。

尝试在每台计算机上使用jconsole应用程序进行更细粒度的检查。您可以在您的sdk的bin目录下找到jconsole。

http://www.ibm.com/developerworks/linux/library/j-nativememory-linux/上也有非常广泛的关于java内存管理的讨论

简短的答案是,内存是如何分配的,这比仅仅查看用户简化的系统实用程序顶部的单个数字要复杂得多。

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

https://stackoverflow.com/questions/2177855

复制
相关文章

相似问题

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