【问题标题】:Why the heap is changing in java为什么堆在java中发生变化
【发布时间】:2013-07-02 08:17:34
【问题描述】:

例如,我们使用 -Xms 等于 -Xmx valuem 来启动 java 进程:

-Xms1500m -Xmx1500m -Dos.heap.max=1500m -verbose:gc -XX:MaxPermSize=256m 

由于某种原因,堆在运行时会发生变化...:

[GC 624542K->464935K(1472000K), 0.0647450 secs] Wed Jul 3 15:58:23 2013
[GC 808811K->813332K(1472000K), 0.1407890 secs] Wed Jul 3 15:58:23 2013
[Full GC 813332K->636599K(1472000K), 0.7913590 secs] Wed Jul 3 15:58:24 2013
[GC 1016090K->956043K(1258752K), 0.1209670 secs] Wed Jul 3 15:58:24 2013
[Full GC 956043K->955974K(1258752K), 0.4132560 secs] Wed Jul 3 15:58:25 2013
[Full GC 1126726K->1122269K(1258752K), 0.4376340 secs] Wed Jul 3 15:58:25 2013
[Full GC 1126726K->1115353K(1258752K), 0.8102960 secs] Wed Jul 3 15:58:26 2013

问题是为什么堆内存在运行时会发生变化...?

【问题讨论】:

  • 问题是为什么堆正在改变...... :)
  • question is why the heap is changed... :) 把它写在问题中而不是 cmets
  • 你是对的......我的错:)
  • 所以你希望堆是静态的?
  • 我认为这是一个有效的问题 - 为什么堆大小会下降到小于初始大小?看到这个帖子:java-monitor.com/forum/showthread.php?t=427

标签: java heap-memory


【解决方案1】:

我理解问题是为什么堆大小从 1500m (1472000K) 下降到更小的 (1258752K),即使初始大小设置为 1500m。

事实证明,这是在长时间运行的 JVM 中众所周知的行为,并且与 PS MarkSweep / Full GC 机制有关 - 请参阅 this article 以获得良好的说明。

干杯,

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多