Java Hour 64 JVM 最大内存设置

从这篇博文起,不再是流水式的学习记录了,稍微改进下风格。

运行时获得当前JVM 设置大小

首先,-Xmx100000000指定最大的内存分配。

public static void main(String[] args) {
       Runtime run = Runtime.getRuntime();

       long max = run.maxMemory();
       long total = run.totalMemory();
       long free = run.freeMemory();

       System.out.println(max);
       System.out.println(total);
       System.out.println(free);
   }

结果:

97320960
16252928
15536696

看到基本是100M的样子。

-Xms 设置JVM 初始化最小值

97320960
96731136
95661464

我们可以看到初始值基本马上就分配了大概100M 的样子。

服务器端上建议-Xms 和-Xmx 设为同样的大小,这样就不用老是伸缩大小了。

GC 的分代模型

在JVM 的章节中我们介绍了GC 的分代回收的策略。

这里的某个JVM 实现划分为 young, old, permanet.

young 代

据说这一代的对象采用的复制收集算法。

old 代

young 代活过几轮就可以进入到old 代。

具体熬过几代可以进入到这里,是有参数可以设置的。

这里的对象采用标记清理算法。

permanet 代

这里的一般不GC, 里面是一些Class 信息。

Note:

因为没有遇到过实际的问题,希望将来能够有碰到类似的问题并尝试解决的机会。

-Xss

-Xmn

上一篇:[ACM_模拟][ACM_数学] LA 2995 Image Is Everything [由6个视图计算立方体最大体积]


下一篇:解决log4j:WARN Error initializing output writer. log4j:WARN Unsupported encoding?的问题