Tencent / TencentKona-17

Tencent Kona JDK17 is a no-cost, production-ready distribution of the Open Java Development Kit (OpenJDK), Long-Term Support(LTS) with quarterly updates. Tencent Kona JDK17 is certified as compatible with the Java SE standard.
Other
141 stars 26 forks source link

Investigate Z GC #24

Open johnshajiang opened 2 weeks ago

johnshajiang commented 2 weeks ago

针对Z GC,编写程序模拟内存分配与垃圾回收场景,能够反应出该GC的特点。解释它的GC日志。修改程序或JVM参数以达成特定目标,如较高的吞吐量。

最终输出一份报告。 报告请放在自己的GitHub中,并将报告的链接通过邮件发送给我们。 在发邮件时,请在标题的开头处注明[姓名+GitHubID+IssueID]。 例如,[江莎+johnshajiang+25]


本issue为2024犀牛鸟开源人才培养活动专属issue,仅供在校大学生参与领取 【认领issue】在研学基地"issue营地"对应issue行的M~R列抢滩报名,即视为认领成功。 【完成issue】已认领issue的同学,请同步在本issue评论区回复“已成功领取本issue”; 如7天内无提交任何进展包括不限于comment \ commit \ Pull Request,则将视为同学主动放弃issue,组委会将释放issue给下一位等候者。

seven17777777 commented 2 weeks ago

已成功领取本issue

seven17777777 commented 1 week ago

java版本corretto21 java程序

public class ZGCDemo {
    public static void main(String[] args) {
        List<byte[]> memoryHog = new ArrayList<>();
        int k = 1;
        while (true) {
            for (int i = 0; i < 1000; i++) {
                // 分配1MB的数组
                byte[] array = new byte[1024 * 1024];
                memoryHog.add(array);
            }
            System.out.println("第" + k++ + "分配1M内存" + "List 大小:" + memoryHog.size());
            // 模拟内存使用情况
            if (memoryHog.size() > 1000) {
                memoryHog.subList(0, 500).clear();
            }

            try {
                // 暂停一段时间,模拟应用程序的其他工作
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

使用指令

-XX:+UseZGC
-Xlog:gc*:file=gc.log

部分日志文件 image

johnshajiang commented 1 week ago

在发邮件时,请在标题的开头处注明[姓名+GitHubID+IssueID]。 例如,[江莎+johnshajiang+25]