jdk

Форк
0
/x
/
TestMemoryManagerMXBean.java 
92 строки · 3.3 Кб
1
/*
2
 * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
 *
5
 * This code is free software; you can redistribute it and/or modify it
6
 * under the terms of the GNU General Public License version 2 only, as
7
 * published by the Free Software Foundation.
8
 *
9
 * This code is distributed in the hope that it will be useful, but WITHOUT
10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
 * version 2 for more details (a copy is included in the LICENSE file that
13
 * accompanied this code).
14
 *
15
 * You should have received a copy of the GNU General Public License version
16
 * 2 along with this work; if not, write to the Free Software Foundation,
17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
 *
19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
 * or visit www.oracle.com if you need additional information or have any
21
 * questions.
22
 */
23

24
package gc.x;
25

26
/**
27
 * @test TestMemoryManagerMXBean
28
 * @requires vm.gc.ZSinglegen
29
 * @summary Test ZGC memory manager MXBean
30
 * @modules java.management
31
 * @run main/othervm -XX:+UseZGC -XX:-ZGenerational -Xmx128M gc.x.TestMemoryManagerMXBean
32
 */
33

34
import java.lang.management.ManagementFactory;
35

36
public class TestMemoryManagerMXBean {
37
    private static void checkName(String name) throws Exception {
38
        if (name == null || name.length() == 0) {
39
            throw new Exception("Invalid name");
40
        }
41
    }
42

43
    public static void main(String[] args) throws Exception {
44
        int zgcCyclesMemoryManagers = 0;
45
        int zgcPausesMemoryManagers = 0;
46
        int zgcCyclesMemoryPools = 0;
47
        int zgcPausesMemoryPools = 0;
48

49
        for (final var memoryManager : ManagementFactory.getMemoryManagerMXBeans()) {
50
            final var memoryManagerName = memoryManager.getName();
51
            checkName(memoryManagerName);
52

53
            System.out.println("MemoryManager: " + memoryManagerName);
54

55
            if (memoryManagerName.equals("ZGC Cycles")) {
56
                zgcCyclesMemoryManagers++;
57
            } else if (memoryManagerName.equals("ZGC Pauses")) {
58
                zgcPausesMemoryManagers++;
59
            }
60

61
            for (final var memoryPoolName : memoryManager.getMemoryPoolNames()) {
62
                checkName(memoryPoolName);
63

64
                System.out.println("   MemoryPool:   " + memoryPoolName);
65

66
                if (memoryPoolName.equals("ZHeap")) {
67
                    if (memoryManagerName.equals("ZGC Cycles")) {
68
                        zgcCyclesMemoryPools++;
69
                    } else if (memoryManagerName.equals("ZGC Pauses")) {
70
                        zgcPausesMemoryPools++;
71
                    }
72
                }
73
            }
74
        }
75

76
        if (zgcCyclesMemoryManagers != 1) {
77
            throw new Exception("Unexpected number of cycle MemoryManagers");
78
        }
79

80
        if (zgcPausesMemoryManagers != 1) {
81
            throw new Exception("Unexpected number of pause MemoryManagers");
82
        }
83

84
        if (zgcCyclesMemoryPools != 1) {
85
            throw new Exception("Unexpected number of cycle MemoryPools");
86
        }
87

88
        if (zgcPausesMemoryPools != 1) {
89
            throw new Exception("Unexpected number of pause MemoryPools");
90
        }
91
    }
92
}
93

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.