Java虚拟机内存-二

时间:2022-12-27 10:17:28


最近对Weblogic上Server的内存使用情况进行了下monitor。在这里整理下。

首先看下Weblogic上内存的设置,我的机子设置如下:

-Xms4096m
-Xmx4096m
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.rmi.port=11230
-Dcom.sun.management.jmxremote.port=11230
-XX:+UseG1GC

从上面看:
1.JVM初始化内存和JVM最大允许内存都是4096m。
2.jmxremote端口是11230。

3.指定JVM使用G1(Garbage First)收集器进行垃圾回收。

JVM内存

之前已经对JVM内存模型进行了讲解,下边是JVM中的区域划分和各个参数的设置。

Java虚拟机内存-二

这里的maxMemory、totalMemory、freeMemory可以利用以下代码获取:

public class HelloWold {
    public static void main(String[] args) {
        System.out.println("free:" + Runtime.getRuntime().freeMemory() / 1024 / 1024);
        System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024);
        System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024 / 1024);
    }
}

在Weblogic中的monitor输出中可以查看:

<49d97267-bfbf-4eae-910e-1c2fea573206-00000007> <1527585221501> <[severity-value: 64] [rid: 0:1] [partition-id: 0] [partition-name: DOMAIN] > 
<BEA-310002> <26% of the total memory in the server is free.> 
####<May 29, 2018, 5:19:41,502 PM HKT> <Info> <Health> <hkgcvdv00381> <WLS_DOM_SPS> 
<weblogic.GCMonitor> <<anonymous>> <> <49d97267-bfbf-4eae-910e-1c2fea573206-00000007> <1527585581502> <[severity-value: 64] [rid: 0:1] [partition-id: 0] [partition-name: DOMAIN] > 
<BEA-310002> <10% of the total memory in the server is free.>

monitor

check JVM内存时,可以通过刚才设置的端口,使用VisualVM连接,同时执行 GC查看各个区域的变化。


垃圾收集算法

标记-清除算法那

复制算法

标记-整理算法


G1收集器

垃圾收集器用于内存回收。《深入理解Java虚拟机》中介绍的有Serial收集器、ParNew收集器、Parallel Scavenger收集器、Serial Old收集器、CMS收集器和G1收集器。


GC

Minor GC

待续

Full GC