| | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * 启动程序 |
| | |
| | | // 内存占用(1.8GB) |
| | | long targetMemory = 1800L * 1024 * 1024; |
| | | List<byte[]> memoryHolder = new ArrayList<>(); |
| | | Random random = new Random(); |
| | | |
| | | // 初始填充 |
| | | while (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory() < targetMemory) { |
| | | memoryHolder.add(new byte[80 * 1024 * 1024]); // 每次分配 80MB |
| | | } |
| | | System.out.println("内存占用已达目标"); |
| | | System.out.println("初始内存占用已达目标"); |
| | | |
| | | // 防止 GC 回收,定期重新填充 |
| | | new Thread(() -> { |
| | | while (true) { |
| | | try { |
| | | Thread.sleep(1000); // 每秒检查一次 |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | long usedMemory = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); |
| | | if (usedMemory < targetMemory) { |
| | | System.out.println("内存占用下降,补充内存..."); |
| | | memoryHolder.add(new byte[80 * 1024 * 1024]); |
| | | } |
| | | } |
| | | }).start(); |
| | | |
| | | // CPU 占用(40%) |
| | | int numCores = Runtime.getRuntime().availableProcessors(); |