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

WPF中StatusBar控件显示状态栏信息

在 WPF 中&#xff0c;StatusBar 控件是用于显示状态栏信息的控件。它通常位于窗口底部&#xff0c;可以包含多个 StatusBarItem&#xff0c;每个 StatusBarItem 可以显示不同的状态信息。 StatusBar 控件提供了以下功能&#xff1a; 显示多个状态栏项&#xff1a;你可以在 S…

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_…

Android wifi dut首次连接酒店wifi,不会弹出登录界面

问题单: 【预置条件】 5G智能省电关闭,WiFi关闭,5G智能切换关闭,双卡关闭5G 卡1制式:移动注册4G VOLTE网络(主卡)卡2制式:联通注册4G VOLTE网络(副卡) 测试地点:长堤大马路 【复现步骤】1.dut连接酒店wifi 2.观察dut 【实际结果】1.dut首次连接酒店wifi,不会弹出登…

2024-01-24 思考-复盘与次日规划

摘要: 对经历的事情进行复盘&#xff0c;对第二天进行规划。 商业分析: 商业合作的目的一定是为了盈利, 不盈利的合作就是扯淡合作的必要条件&#xff0c;是基于双方的资源的互补但是能商业合作的一个很大的前提&#xff0c;是信任一件事情很多人都能做&#xff0c;但是为什么…

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中编写视图函数 首先要…

Java进阶之旅第八天

Java进阶之旅第八天 文章目录 Java进阶之旅第八天异常作用分类编译时异常运行时异常 异常的处理方式默认的处理方式自己处理(捕获异常) 异常的常见方法Throwable 的成员方法代码结果 异常的抛出处理throws和throw 自定义异常 异常 作用 自己写的代码在运行过程中发生某种错误…

wayland(xdg_wm_base) + egl + opengles 纹理贴图实例

文章目录 前言一、纹理贴图1. 纹理贴图介绍2. 使用opengles 实现纹理贴图的主要步骤二、代码实例1. egl_wayland_texture.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3. 编译4. 运行总结前言 本文主要介绍如何在一个wayland client 里面使用 egl + opengles 实现…

[极客大挑战 2019]BabySQL1

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

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

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