相关疑难解决方法(0)

为什么-Xmx和Runtime.maxMemory不同意

当你添加

 -Xmx????m
Run Code Online (Sandbox Code Playgroud)

在命令行中,JVM为您提供了一个接近此值的堆,但最多可以输出14%.JVM可以为您提供更接近您想要的数字,但只能通过反复试验.

 System.out.println(Runtime.getRuntime().maxMemory());
Run Code Online (Sandbox Code Playgroud)

版画

-Xmx1000m ->  932184064
-Xmx1024m -Xmx1g ->  954728448
-Xmx1072m ->  999292928
-Xmx1073m -> 1001390080
Run Code Online (Sandbox Code Playgroud)

我正在运行HotSpot Java 8 update 5.

显然,堆可以是上面的东西,1000000000但为什么这-Xmx1073m不是说-Xmx1000m

BTW 1g== 1024m表示1g应该是1024 ^ 3,比1000 ^ 3高7%,但是你得到比1000 ^ 3低7%的东西.


被这么多关闭表明我错过了关于堆如何工作的基本信息.如果我要求-Xmx1000m并且1001390080我不在乎,我会假设它需要遵守一些分配多个,但是为了给你932184064建议堆比我想象的更复杂.


编辑我发现了

-Xmx1152m gives 1073741824 which is exactly 1024^3
Run Code Online (Sandbox Code Playgroud)

所以看起来它比我在这种情况下要求的maxMemory()减少了128 MB.


BTW 128是我最喜欢的号码.我今天在街道号码的会议上,128发言人从页面引用了一本书128;)

java memory garbage-collection jvm heap-memory

23
推荐指数
1
解决办法
5828
查看次数

PS Survivour空间几乎满了

我看到我的应用大部分时间PS幸存空间几乎已满(98%).我不知道什么是PS幸存者空间.这是正常的吗?在这种情况下应该做些什么?有人可以解释一下.提前致谢 :)

garbage-collection jvm memory-leaks

12
推荐指数
1
解决办法
5万
查看次数

Java GC:为什么有两个幸存者空间

在大多数在线教程中,我们可以看到它们显示GC中有两个幸存者空间.当我们实际上只有一个时,需要有两个幸存者空间?拥有两个幸存者空间对性能有何影响?

java performance garbage-collection

8
推荐指数
1
解决办法
3491
查看次数