我们可以从Java应用程序内部限制Java应用程序的内存吗?
作者:互联网
我们可以使用JVM参数来限制为JVM堆等分配的内存.
我想知道在开发期间是否可以在Java程序中对这些值进行硬编码,而不是在运行程序时在命令行中添加JVM参数.可能吗?
解决方法:
我的第一个问题应该是,为什么要设置它?服务器JVM将最大值设置为主内存大小的1/4,这对于大多数应用程序来说是合理的.您可以通过构建自己的JVM来更改它,也可以创建一个别名,例如
alias java="java -Xmx30g"
您可以做的是定期检查内存使用情况,如果使用更多,则终止该过程.当然,这是一个非常糟糕的主意.
相反,您可以做的是使用相同的参数但以所需的最大堆大小再次运行该程序.即您可以运行Runtime.exec.
您无法更改它,因为它会在启动时保留最大的内存大小.
顺便说一句,人们普遍误认为堆是唯一重要的内存.这是不正确的,因为JVM,线程堆栈,本机内存等都使用了一些内存,因此您可以将堆设置为100 MB,但是JVM可能使用300 MB.
标签:memory,jvm,memory-management,java,jvm-arguments 来源: https://codeday.me/bug/20191122/2060475.html