Java实现对系统CPU、内存占用率的控制

背景:由于使用的业主的云资源,由于使用率低,会不持续的缩减服务器配置。为了避免后续由于新业务上线,需要更多资源的时候,无法再次获得资源(回收容易,申请难)。

问题:怎样通过Java程序实现CPU、内存占用超过50%?

代码:

package src;import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CpuMemory {public static void main(String[] args) {try {for(int i=0;i<args.length;++i){System.out.println("args"+i+":"+args[i]);}if (args.length > 0) {/// cpu// 获取当前服务器的核心数int numProcessors = Runtime.getRuntime().availableProcessors();System.out.println("内核数量:" + numProcessors);if(numProcessors>=2) {// 服务器内核数量不可小于2// 最终效果:让CPU空跑占用率到50%// 方案:每个死循环会让一个核心占用到100%,这样如果8个核心则制造4个死循环,就可以让整体CPU占用为50%。如果只有一个核心,这个方案就不太适用了。for (int p = 0; p < numProcessors/2; p++) {new Thread(new cpuLoop()).start();}}/// 参考:java -Xmx1200m -Xms1200m -Xmn100m -XX:MaxTenuringThreshold=0 -jar  cpu-and-memory-rate.jar 1000// 说明:参数arg1为1000则说明程序运行后占用系统内存1000MB;-Xmn固定配置100m;-Xmx、-Xms设置为arg1+200。memory(Long.parseLong(args[0]));}else{System.out.println("没有传递任何参数!");}} catch (InterruptedException e) {throw new RuntimeException(e);}}static class cpuLoop implements Runnable{@Overridepublic void run() {int i = 0;while(true){i++;}// while}// run}// 每个Object对象16byte,则65536个Object=1MBstatic void memory(long countMB) throws InterruptedException {// 由于ArrayList占用一定的空间,所以假设countMB=5000,则实际占用的空间为6500M,系数约为1.3// 所以此处对countMB=countMB/1.3,使实际占用的内存空间更接近设置值countMB = (long) (countMB/1.3);// 制造1MB需要的Object数量int objCount = 65536;// 在创建数组的时候,就要指定数组容量大小,否则占用的空间计算会不准(测试是Object占用空间2倍还多)int arrCapacity = (int) (objCount*countMB);ArrayList<Object> al = new ArrayList<>(arrCapacity);// 每次循环占用1MBfor(int i = 0; i<countMB; ++i) {for(int j=0; j<objCount; ++j) {Object obj = new Object();al.add(obj);obj = null;}}// 避免:运行结束程序退出。try {for(int k=0; k<99; ++k){int input = System.in.read();}} catch (IOException e) {throw new RuntimeException(e);}}// cpu
}

效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git学习笔记(第9章):国内代码托管中心Gitee

目录 9.1 简介 9.1.1 Gitee概述 9.1.2 Gitee帐号注册和登录 9.2 VSCode登录Gitee账号 9.3 创建远程库 9.4 本地库推送到远程库(push) 9.5 导入GitHub项目 9.6 删除远程库 9.1 简介 9.1.1 Gitee概述 众所周知&#xff0c;GitHub服务器在国外&#xff0c;使用GitHub作为…

3.1集合-Set+集合-list

一、数据结构 1.1什么是数据结构 数据结构就是用来装数据以及数据与之间关系的一种集合&#xff0c;如何把相关联的数据存储到计算机&#xff0c;为后续的分析提供有效的数据源&#xff0c;是数据结构产生的由来。数据结构就是计算机存储、组织数据的方式。好的数据结构&…

数据结构·单链表

不可否认的是&#xff0c;前几节我们讲解的顺序表存在一下几点问题&#xff1a; 1. 中间、头部的插入和删除&#xff0c;需要移动一整串数据&#xff0c;时间复杂度O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗 3. 增容一般是2倍的增…

01、领域驱动设计:微服务设计为什么要选择DDD总结

目录 1、前言 2、软件架构模式的演进 3、微服务设计和拆分的困境 4、为什么 DDD适合微服务 5、DDD与微服务的关系 6、总结 1、前言 我们知道&#xff0c;微服务设计过程中往往会面临边界如何划定的问题&#xff0c;不同的人会根据自己对微服务的理 解而拆分出不同的微服…

Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

目录 搭建 TFTP 服务文件下载更多内容 TFTP&#xff08;Trivial File Transfer Protocol&#xff0c;简单文件传输协议&#xff09;是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务&#xff0c;端口号…

解决TortoiseGit软件Git Show log时显示Too many files to display的问题

1 问题描述 有时代码提交修改的文件比较多&#xff0c;当查看log时无法显示出来修改的文件列表&#xff0c;如下所示&#xff1a; 2 解决方法 将LogTooManyItemsThreshold尽可能配置得大一些。 三 参考资料 https://gitlab.com/tortoisegit/tortoisegit/-/issues/3878

C++补充篇- C++11 及其它特性

目录 explicit 关键字 左值和右值的概念 函数返回值当引用 C11 新增容器 - array C的类型转换 static_cast reinterpret_cast dynamic_cast const_cast C智能指针 auto_ptr 使用详解 (C98) unique_ptr 使用详解 (C11) auto_ptr的弊端 unique_ptr严谨auto_ptr的弊端 unique_…

JVM实战(30)——模拟堆内存溢出

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

ME51N屏幕增强——添加历史订单价格字段

参考&#xff1a; 资料&#xff1a;SAP所有模块用户出口(User Exits) _coopa003-CSDN博客 SAP ABAP常用增强记录文档_sap自动过账增强-CSDN博客 https://www.cnblogs.com/zyhcs/p/15759434.html 需求&#xff1a; 增加给OA传输接口的字段。 采购申请增加历史价格显示。 已经…

Android 水印效果

Android 水印效果 本文主要介绍下android 中水印的实现效果. 实现的方式有多种,就不一一赘述了, 本文就是通过自定义drawable来实现水印. 不多说,直接上代码吧: import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; i…

【QT+QGIS跨平台编译】之七:【libjpeg+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、libjpeg介绍二、文件下载三、文件分析四、pro文件五、编译实践一、libjpeg介绍 libjpeg是一个广泛使用的jpeg图像压缩和解压的函数库,采用 C 语言开发。 2013年1月,Independent JPEG Group发布了版本9,对新引入的无损编码模式进行了改进。2022年1月,发布了版…

蓝桥杯省赛无忧 排序 课件40 冒泡排序

01 冒泡排序的思想 02 冒泡排序的实现 03 例题讲解 #include <iostream> using namespace std; void bubbleSort(int arr[], int n) {for (int i 0; i < n-1; i) { for (int j 0; j < n-i-1; j) {if (arr[j] > arr[j1]) {int temp arr[j];arr[j] arr[j1…

Django开发_18_REST Framework

一、介绍 二、使用 &#xff08;一&#xff09;安装依赖 pip install djangorestframework pip install httpie &#xff08;二&#xff09;序列化 1.models.py创建模型类 2.admin.py中注册模型类 3.创建serializer.py文件 创建序列化类 4.views.py中编写视图函数 首先要…

[极客大挑战 2019]BabySQL1

发现union select被过滤了&#xff0c;双写绕过 or、from被过滤 where被过滤 在b4bysql中找到flag

架构师之路(十四)计算机网络(网络层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 网络层提供主机…

探索Gin框架:快速构建高性能的Golang Web应用

前言 Gin框架是一个轻量级的Web框架&#xff0c;基于Go语言开发&#xff0c;旨在提供高性能和简洁的API。它具有快速的路由和中间件支持&#xff0c;使得构建Web应用变得更加简单和高效。无论是构建小型的API服务还是大型的Web应用&#xff0c;Gin框架都能够满足你的需求。 无论…

go api(get post传参,数据库,redis) 测试

介绍&#xff1a;分别测试get请求&#xff0c;post请求&#xff0c;请求链接数据库&#xff0c;以及redis操作。 1.api代码 package mainimport (_ "database/sql""encoding/json""github.com/gin-gonic/gin""go-test/com.zs/database&quo…

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…

Vue3+TS+dhtmlx-gantt实现甘特图

实现样式 因为只做展示&#xff0c;所以实现很简单 实现功能 自定义列头增加斑马线&#xff0c;实际结束时间&#xff08;自定义实现&#xff09;自定义进度展示&#xff0c;根据层级让进度背景颜色变浅marker标记今天自定义提示框内容 实现 import { gantt } from "d…

STM32F407移植OpenHarmony笔记1

参考文档&#xff1a; OpenAtom OpenHarmonywidthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v3.2/zh-cn/device-dev/get-code/gettools-acquire.md/ 搭建环境 安装linux系统: Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-91-generic x86_64) 下载源代码&a…