【发布时间】:2015-10-12 21:50:05
【问题描述】:
我有 1GB 内存的小型 Linux 服务器 (VPS) 我只想给 Java VM 256MB 是否有将 Java VM 限制为该内存大小的选项,所以当我超过该限制时,我开始捕获 OutOfMemory 异常
主要问题是,当内存超过负载时,我将返回重载错误,这是可以接受的响应,但问题 Java 一直在消耗系统内存,这些内存将被强制释放给其他程序!!
是的,我需要最小化内存,因为服务器不是专门用于 Java 的,并且为 Java 的 sack 超出内存不是一种选择。
如果没有这种方式的 Java 选项,我应该选择 C++ 来开发 Linux,复杂性、线程或内存管理不是问题,因为这个 Java 程序只是一个专用服务
【问题讨论】:
-
-Xmx256m 是选项。
-
这是一个很大的秘密,但 Oracle 实际上确实提供了文档。 docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html 。当您搜索“java 内存配置”或其任何变体时,谷歌提供的数千个链接并不是什么秘密。
-
另外,不要尝试捕获 OutOfMemory 异常(实际上是一个错误)。您不太可能从中恢复过来。
-
其实我用的是小程序,Java上去,思路很简单,不要超过你那份内存,我无论如何也不能强求!尝试这个示例 java -Xms1M -Xmx1M -Xss1M -jar program.jar 理论上肯定会出错,但是没有 Java 的最小内存约为 64M,没关系,那我应该有 191MB,它会上升!!!