有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在jvm gc中优化大型短期对象

我们遇到了一个关于jvm gc的问题。我们有一个大型QPS应用程序,jvm堆内存增长非常快。它会在几秒钟内使用超过2g的堆内存,然后gc触发器每次也会收集超过2g的内存。gc收集情况如下图所示。所以这有两个问题

  1. 我需要一些时间。更重要的是,它是经常发生的
  2. 系统将无法稳定

enter image description here 我将问题抽象为下面的代码。系统快速分配短命对象

public static void fun1() {
    for(int i = 0; i < 5000; i++) {
        Byte[] bs = new Byte[1024 * 1024 * 5];
        bs = null;
    }
}

所以,我有一些问题:

  1. 很多人说set object equals null可以让gc线程更容易地收集数据。这是什么意思?我们都知道,当JVM无法为新对象分配空间时,总会触发次要GC。因此,一个对象是否
    如果为空,则仅当空间不足时才会触发gc。所以set object为null没有意义
  2. 如果存在大型短命对象,如何优化此功能?我的意思是如何收集这些物品,而不是在年轻一代还不够的时候

任何建议都会对我有帮助


共 (0) 个答案