增加负荷批处理
CPU负载
# 获取逻辑核心数
$cores = [Environment]::ProcessorCount
$jobsToStart = [Math]::Ceiling($cores / 2)
Write-Host "检测到 $cores 个逻辑核心" -ForegroundColor Cyan
Write-Host "将启动 $jobsToStart 个满载后台作业,预计整体CPU占用率 50%" -ForegroundColor Green
Write-Host ""
# 启动后台作业(每个作业无限空循环)
$jobs = @()
for ($i = 1; $i -le $jobsToStart; $i++) {
$jobs += Start-Job -ScriptBlock {
while ($true) {
# 空循环占满 CPU
$a = 1 + 1
}
}
Write-Host "已启动作业 #$i"
}
Write-Host ""
Write-Host "所有作业已启动。现在打开任务管理器查看 CPU 使用率(应稳定在 50% 左右)。" -ForegroundColor Yellow
Write-Host "按 Enter 键停止所有作业并退出..."
Read-Host
# 停止并清理作业
$jobs | Stop-Job
$jobs | Remove-Job
Write-Host "已停止所有作业。" -ForegroundColor Red增加内存负荷
<#
.SYNOPSIS
安全地占用指定量物理内存,自动避免数组过大错误。
.DESCRIPTION
使用较小的块(默认64MB)分配内存,避免单个数组超出限制。
若分配失败,自动减小块大小重试。
按 Enter 释放内存。
#>
# 配置目标内存(GB)
$targetGB = 8
# 检查 PowerShell 位数
if (-not [Environment]::Is64BitProcess) {
Write-Host "错误:当前 PowerShell 是32位,无法分配大内存。请使用64位PowerShell。" -ForegroundColor Red
exit 1
}
# 初始块大小(64MB)
$blockSize = 64 * 1024 * 1024 # 64MB
$minBlockSize = 1 * 1024 * 1024 # 1MB(最小回退值)
$totalNeeded = $targetGB * 1GB
$blocks = @()
$totalAllocated = 0
Write-Host "目标内存: $targetGB GB" -ForegroundColor Cyan
Write-Host "尝试使用块大小: $($blockSize/1MB) MB" -ForegroundColor Yellow
while ($totalAllocated -lt $totalNeeded -and $blockSize -ge $minBlockSize) {
try {
# 计算当前块大小下还需多少块
$remaining = $totalNeeded - $totalAllocated
$numBlocks = [math]::Ceiling($remaining / $blockSize)
for ($i = 0; $i -lt $numBlocks; $i++) {
# 创建字节数组
$block = New-Object byte[] $blockSize
# 遍历每个页面写入,强制物理内存分配(4KB步长)
for ($j = 0; $j -lt $blockSize; $j += 4*1024) {
$block[$j] = 1
}
$blocks += $block
$totalAllocated += $blockSize
$percent = [math]::Round($totalAllocated / $totalNeeded * 100, 1)
Write-Host "已分配: $($totalAllocated/1GB) GB ($percent%)" -ForegroundColor Green
}
}
catch {
# 分配失败,可能块太大
Write-Host "使用块大小 $($blockSize/1MB) MB 失败: $_" -ForegroundColor Red
$blockSize = $blockSize / 2 # 减半重试
if ($blockSize -ge $minBlockSize) {
Write-Host "尝试减小块大小为 $($blockSize/1MB) MB 继续..." -ForegroundColor Yellow
# 清除已分配的部分?通常不需要,但可以继续追加
} else {
Write-Host "块大小已降至最小,无法继续分配。" -ForegroundColor Red
break
}
}
}
if ($totalAllocated -ge $totalNeeded) {
Write-Host "`n成功占用 $($totalAllocated/1GB) GB 物理内存!" -ForegroundColor Green
} else {
Write-Host "`n仅占用了 $($totalAllocated/1GB) GB,未达到目标 $targetGB GB。" -ForegroundColor Yellow
}
Write-Host "按 Enter 释放内存并退出..."
$null = Read-Host
# 释放内存
$blocks.Clear()
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
Write-Host "内存已释放。" -ForegroundColor Red