内存分配上java与go资源对比

94 阅读2分钟

试验环境: linux 2c2g + java17 功能:

        Thread t1 = new Thread(() -> {
            for (;;) {
                try {
                    TimeUnit.MICROSECONDS.sleep(100);
                    byte[] bytes = new byte[10*1024*1024];
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t1.start();
        Thread t2 = new Thread(() -> {
            for (;;) {
                try {
                    TimeUnit.MICROSECONDS.sleep(200);
                    byte[] bytes = new byte[5*1024*1024];
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t2.start();
	go func() {
		for {
			abc := make([]byte, 10*1024*1024)
			abc = append(abc, 0)
			time.Sleep(100 * time.Millisecond)
		}
	}()
	go func() {
		for {
			abc := make([]byte, 5*1024*1024)
			abc = append(abc, 0)
			time.Sleep(200 * time.Millisecond)
		}
	}()

java指标

  • -Xmx1536m -XX:+UseZGC

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:     1000     28005   77.80    0.88    0.00   78.68     -  java

Average:      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Average:     1000     28005    549.93      0.00 86575952 1825311  97.01  java

Average:      UID       PID   cswch/s nvcswch/s  Command
Average:     1000     28005      0.00      0.00  java
  • -Xmx1536m -XX:+UseG1GC

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:     1000     16789   78.02    1.10    0.00   79.12     -  java

Average:      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Average:     1000     16789      0.00      0.00 4318376 278340  14.79  java

Average:      UID       PID   cswch/s nvcswch/s  Command
Average:     1000     16789      0.00      0.00  java
  • -Xmx1536m -XX:+UseParallelGC

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:     1000     25512   73.90    0.66    0.00   74.56     -  java

Average:      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Average:     1000     25512    240.79      0.00 4285924 707090  37.58  java

Average:      UID       PID   cswch/s nvcswch/s  Command
Average:     1000     25512      0.00      0.00  java

go指标

Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
Average:        0     30886    5.59    3.06    0.00    8.65     -  myapp

Average:      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Average:        0     30886   1248.55      0.00  707196  30036   1.60  myapp

Average:      UID       PID   cswch/s nvcswch/s  Command
Average:        0     30886    344.75      3.77  myapp

总结

这只是一个简单的内存分配小场景, 不具备任何代表与偏向性。