JVM 性能调优 - 参数调优(3)

查看 JVM 内存的占用情况

编写代码

package com.test;public class PrintMemoryDemo {public static void main(String[] args) {// 堆内存总量long totalMemory = Runtime.getRuntime().totalMemory();// jvm 试图使用的最大堆内存long maxMemory = Runtime.getRuntime().maxMemory();// jvm 剩余的堆内存long freeMemory = Runtime.getRuntime().freeMemory();System.out.println("jvm 堆内存总量: " + totalMemory/1024/1024 + "MB");System.out.println("jvm 最大内存: " + maxMemory/1024/1024 + "MB");System.out.println("jvm 剩余内存: " + freeMemory/1024/1024 + "MB");}
}

运行程序

$ java com.test.PrintMemoryDemo
jvm 堆内存总量: 366MB
jvm 最大内存: 5431MB
jvm 剩余内存: 362MB

本机的内存为 24G,初始化堆内内存为 366M,接近本机的 1/64(24G/64=384M)。最大堆内存为 5431M,接近本机的 1/4(24G/4=6144M)

Eden 区优先分配

首先我们需要了解下 JVM 的四种垃圾收集场景:

  • Minor GC 和 Young GC 都是指新生代的垃圾收集。
  • Major GC 和 Old GC 都是指老年代的垃圾收集。(CMS 收集器专属)
  • Mixed GC 混合收集,指收集整个新生代以及部分老年代的垃圾收集。(G1 收集器专属)
  • Full GC 整堆收集,指收集整个 Java 堆和方法区垃圾收集。

新生代和老年代在 Java 虚拟机内存体系 着重介绍了,我们在这里还是简单复习下。 堆分为新生代 + 老年代,新生代又被划分为 Eden 区和 Survivor 区,Survivor 又被划分为两个相等大小的 s0 和 s1 区。其中 Eden 区大小和 Survivor 区大小是 8:1。默认情况下新生代占堆的 1/3,老年代占堆的 2/3。 如下图所示,气泡中的数字代表占用内存的份数,比如 Eden 区占用:

 大多数情况下,新创建的对象都会在新生代的 Eden 区中分配,当 Eden 区没有足够的空间分配时,虚拟机将会发生一次 Minor GC。 下面我们设置程序的堆大小为 30 MB,且不可扩大。

编写代码

package com.test;public class EdenAllocationDemo {// 定义占用 1MB 空间的变量private static final int _1MB = 1024 * 1024;public static void main(String[] args) {byte[] allocation1, allocation2, allocation3, allocation4;allocation1 = new byte[2 * _1MB];allocation2 = new byte[2 * _1MB];allocation3 = new byte[2 * _1MB];allocation4 = new byte[4 * _1MB];}
}

执行程序

$ java -Xms30m -Xmx30m -Xmn10m -XX:SurvivorRatio=8 -XX:+PrintGCDetails com.test.EdenAllocationDemo
Heap
 PSYoungGen      total 9216K, used 7456K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
  eden space 8192K, 91% used [0x00000000ff600000,0x00000000ffd48008,0x00000000ffe00000)
  from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
  to   space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
 ParOldGen       total 20480K, used 4096K [0x00000000fe200000, 0x00000000ff600000, 0x00000000ff600000)
  object space 20480K, 20% used [0x00000000fe200000,0x00000000fe600010,0x00000000ff600000)
 Metaspace       used 2678K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 289K, capacity 386K, committed 512K, reserved 1048576K

命令行解释:

  • -Xms30M 最小堆内存 30 M。
  • -Xmx30M 最大堆内存 30 M。
  • -Xmn10M 新生代占用堆内存 10 M。
  • -XX:SurvivorRatio=8 新生代中的 Eden 区和新生代中的一个 Survivor 区比例为 8:1。
  • 堆中的新生代占用 10 MB,占用堆内存的 1/3,剩下的 20 MB 分配给老年代。新生代中的一个 Survivor 区占用 1/10(1 MB),另外一个 Survivor 区占用 1/10(1 MB),Eden 区占用 8/10(8 MB)。

结果分析:

新生代总内存 9216K (Eden区 + 1个Suvivor区,已使用 7456K)
    新生代Eden区 8192K(8M),使用 7456/8162=91%
        from suvivor 区 1024 K,已使用 0%
        to suvivor 区 1024 K,已使用 0%
老年代总内存 20480 K,已使用 4096 K,4096/20480=20%

创建的 allocation1、allocation2、allocation3 分配到了 Eden 区,占用 6M,当分配 allocation4(需要4M) 时,因为新生代内总内存总共只有 9M(8M Eden 区 + 1M Suvivor 区) ,allocation4 不能放进 Eden 区,直接放到了老年代。

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

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

相关文章

【Linux】Linux权限(下)

Hello everybody!在上一篇文章中,权限讲了大部分内容。今天继续介绍权限剩下的内容,希望大家看过这篇文章后都能有所收获! 1.更改文件的拥有者和所属组 对于普通用户,文件的拥有者和所属组都无权修改。 、 、 但root可以修改文件…

多账号运营为什么要使用动态住宅代理IP?

对于跨境有多账号运营需求的企业来说,选择正确类型的代理IP对于平稳运行至关重要。但最适合这项工作的代理类型是什么?为了更好地管理不同平台上的多个账户并优化成本,您可以选择动态住宅代理。 一、什么是动态住宅代理 动态住宅代理IP是互联…

创新方案|经济下行周期下企业避免杀价内卷侵蚀利润亟需5种创新定价策略

随着通胀持续、全球经济衰退逆风让消费者谨慎支出,绝大多数企业都担心如何刺激购买且保持利润率。在本研究认为,公司不应该简单地调整价格,而应该创造性地借鉴其他行业定价打法,通过创新定价选项的组合,增加向客户计价…

LLM之RAG实战(二十二)| LlamaIndex高级检索(一)构建完整基本RAG框架(包括RAG评估)

在RAG(retrieval Augmented Generation,检索增强生成)系统中,检索到文本的质量对大型语言模型生成响应的质量是非常重要的。检索到的与回答用户查询相关的文本质量越高,你的答案就越有根据和相关性,也更容易…

QMUI_Android:提升Android开发效率与质量的利器

QMUI_Android:提升Android开发效率与质量的利器 在Android应用开发过程中,开发者常常面临着重复编写基础组件和处理兼容性问题的挑战,这不仅耗费时间,也降低了开发效率。为了解决这一问题,Tencent推出了QMUI_Android框…

LeetCode、17. 电话号码的字母组合【中等,dfs回溯】

文章目录 前言LeetCode、17. 电话号码的字母组合【中等,dfs回溯】题目与类型思路递归回溯优化:StringBuilder来回溯补充代码:2024.1.31(简化) 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博…

docker部署docker运维工具

简介 主要功能:管理容器,管理镜像,管理容器网络 安装 拉取镜像 docker pull joinsunsoft/docker.ui:1.0.1 启动容器 docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 10039:8999 joinsunsoft/docker.ui:1.0.1 使用 打…

基于鲸鱼优化的knn分类特征选择算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 鲸鱼优化算法(WOA) 4.1.1 包围猎物 4.1.2 螺旋式搜索 4.1.3 更新策略 4.2 K近邻(KNN)分类器 4.3 基于WOA的KNN分类特征选择算法 5.完…

将Juniper虚拟防火墙vSRX导入EVE-NG

正文共:555 字 8 图,预估阅读时间:1 分钟 前面我们已经简单介绍了如何导入vSRX的VMware镜像到Workstation(Juniper虚拟防火墙vSRX部署初体验),如何导入ESXi并简单操作WEB配置(将Juniper虚拟防火…

【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》

文章目录 1、问题提出2,网络协议是分层的3,应用层4,传输层5,网络层6,网络接口层7,总结 1、问题提出 为什么要有 TCP/IP 网络模型? 不同设备上的进程间通信需要通过一套通用的网络协议进行网络通…

第二证券:北向资金连续第五日净流入,茅台、工行、五粮液等获加仓

沪指低收险守2700点关口,北向资金接连5日净流入。 2月5日,A股三大股指团体低开,三大股指均创阶段性新低后反弹,创业板指午后首先翻红且一度涨超3%,深成指和沪指也相继转涨。但商场做多情绪欠安,沪深股指重…

opensatck中windows虚拟机CPU核数显示异常问题处理

文章目录 一、问题描述二、元数据信息三、以32核的实例模版为例3.1 单槽位32核3.2 双槽位32核 总结 一、问题描述 openstack创建windows虚拟机的时候,使用普通的实例模版会出现CPU数量和实例模版不一致的问题。需要定制元数据才可以正常显示。 帖子:htt…

米贸搜|关于Facebook广告受限:在这些情况下,Meta会限制广告主的广告能力!

如果你被限制了投放广告,那么你会在Facebook上收到通知。 除了审查广告之外,Meta还监控和调查广告主在Meta技术上的行为,在某些情况下,Meta可能会对广告主施加限制,限制广告主的广告能力,这些限制旨在帮助保…

ChatGPT高效提问—prompt基础

ChatGPT高效提问—prompt基础 ​ 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件,可以引导模型生成符合预期的回复。例如,在对话中,可以使用明确的问题或陈述引导模型生成…

macbookpro和macbookair的区别?cleanmymac 怎么清理mac空间

苹果mac air和pro区别有:1、air采用了轻薄的设计,重量相对较轻,便于携带,而pro更加注重性能,所以比较重;2、air通常搭载较低功耗的处理器内存和存储容量相对较小,而pro配备了更强大的处理器、更…

基于Vue2用keydown、keyup事件实现长按键盘任意键(或组合键)3秒触发自定义事件(以F1键为例)

核心代码 <template></template> <script> export default {created() {//监听长按快捷键addEventListener("keydown", this.keydown);addEventListener("keyup", this.keyup);},destroyed(d) {//移除长按快捷键removeEventListener(&…

外汇天眼:外汇中的“直接套汇”是指什么?

外汇中的直接套汇又称地点套汇和两角套汇&#xff0c;由于两间汇率高低不同&#xff0c;同时在两个市场上买贱卖贵&#xff0c;从中赚取汇率差额。 例如&#xff1a;英镑的价格在伦敦较贵&#xff0c;或者说英镑在纽约就较便宜&#xff0c;而美元的价值在伦敦较便宜&#xff0c…

计算机毕业设计 | SpringBoot大型旅游网站 旅行后台管理系统(附源码)

1&#xff0c; 概述 1.1 项目背景 随着互联网技术的快速发展和普及&#xff0c;旅游行业逐渐转向线上&#xff0c;越来越多的游客选择在线预订旅游产品。传统的线下旅行社模式已不能满足市场需求&#xff0c;因此&#xff0c;开发一个高效、便捷的旅游网站成为行业的迫切需求…

算法-2-异或运算

按位异或&#xff1a;相同为0&#xff0c;不同为1 异或运算性质 1&#xff09;异或运算就是无进位相加&#xff08;ab写二进制形式每位相加时不进位&#xff09; 2&#xff09;异或运算满足交换律、结合律&#xff0c;也就是同一批数字&#xff0c;不管异或顺序是什么&#…

Stable Diffusion 模型下载:majicMIX lux 麦橘辉耀 - V3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 非常推荐的一个非常绚丽的科幻、梦幻、玄幻般的大模型&#xff0c;由国人“Merjic”发布&#xff0c;下载量颇高。这个模型风格炸裂&#xff0c;远距离脸部需要inp…