iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java reservedcodecachesize虚拟机参数案例详解
  • 684
分享到

Java reservedcodecachesize虚拟机参数案例详解

2024-04-02 19:04:59 684人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

一、reservedcodecachesize参数介绍 该参数是JVM虚拟机调优中调整内存大小的一个设置参数,值得大小设置直接影响到Code Cache的大小,而jvm编译的代码有常

一、reservedcodecachesize参数介绍

该参数是JVM虚拟机调优中调整内存大小的一个设置参数,值得大小设置直接影响到Code Cache的大小,而jvm编译的代码有常常存放在Code Cache中,而Code Cache的空间内存又支撑着jvm的正常运行,如果该空间不足jvm虚拟机将会发生问题,并且性能持续降低。

Code Cache就是所谓的代码缓存,由于JVM虚拟机的内存默认是有大小限制的,因此代码缓存区域肯定也是有一定大小限制,一般的windows电脑上64位系统下它的默认大小应该是48M,如果代码缓存已满则jvm在编译代码时的优化设置就会被禁用,这也就是为什么jvm性能会持续降低的原因。

jvm调优内存结构详图

合理的调整该reservedcodecachesize值设置的大小就可以达到令JVM虚拟机不断调优不断进行优化而达到高性能执行的目的。

二、该参数如何设置与调优

1)reservedcodecachesize调优说明

在学会如何设置该参数值得大小与如何调用之前,我们首先要明白一个问题,就是jvm虚拟机本身默认的配置已经是非常合理的了,若非遇到性能瓶颈的情况下,是不需要进行调整该值的大小的。

即便设置该值的大小也是需要根据本机本地电脑系统内存的总大小作为参考指导,也就是说该值调整需要根据电脑系统的内存来做出判断的,并没有固定的值。

我们的项目在生产环境中平时运行的很好,然而经常会遇到性能问题的时候,我们才会考虑配置jvm的参数,调整虚拟机性能的最大化。

2)如何判断reservedcodecachesize的大小导致的性能降低

那么问题来了,我们该如何判断是由于该参数默认值太小导致代码缓存已满而造成的性能有问题呢?这时我们可以查看JVM的运行日志,它的日志中会显示出下面截图中的警告信息,警告我们代码缓存已满。此时jvm的编译器就会被禁止使用,因此代码编译停止直接导致jvm运行速度迅速下降。

jvm虚拟机日志警告详细信息一览

如果发现上图中的警告消息,说明我们就该设置该参数的值调整其大小。

3)调整该参数值得大小进行调优

接下来就是reservedcodecachesize参数值调整其大小进行性能调优的重中之重了,我们上文中也提到过了调整该值的大小是根据本地内存的做参考依据的,这里的设置只能有一定的参考意义,并不适用每一台机器。

只要报上图中的警告信息就说明代码缓存空间太小不够用,因此需要将值调大,其次jvm的垃圾回收期是不会回收代码缓存空间的,随着jvm运行时间不断的增加,该值得空间可用缓存也会越来越少。

因此解决办法有两个,我们可以从下面这两方面进行,根据工作经验以及生产经验来看,一般将该值的大小调整为256兆,具体代码如下:

XX:ReservedCodeCacheSize=256m

另一个方面我们就可以配置jvm的垃圾回收机制去回收代码缓存空间,开启代码如下:

XX:+UseCodeCacheFlushing

三、jvm虚拟机其它参数详解

1)-Xms -Xmx参数详解

-Xms和-XMx两个参数分别指代jvm初始分配的内存大小和JVM能够分配到堆内存上限的最大值,常用的标记单位一般是M或者g。

我们在jvm启动时可以设置合理的这两个参数的值的大小,其实jvm也会自动调整堆内存的大小,所以当看到实际的值与我们设定的值不一致的时候,不要惊慌,那是因为jvm在动态的调整。

2)-XX:PermSize and -XX:MaxPermSize参数详解

上面的两个参数分别指代非堆内存的初始化最小值以及非堆内存的上限最大值,当jvm中堆空间的大小过小,或者是小于50%时就会发出警告,报堆内存太小的警告信息,此时一般就是指的PermSize的值太小,我们可以适当地对其进行调整,不过还是要根据本地机器的内存大小来设置。

此外,这两个值还直接影响到永久代的大小,如果Java中引入了大量的第三方类库,而jvm在编译时需要将这些大量类库加载到内存中,需要加载到永久代中,这时可以适当调大来增加永久带的大小。

3)-XX:OnOutOfMemoryError参数详解

OnOutOfMemoryError参数就是告诉我们当我们的jvm发生内存溢出或者是内存泄漏时,我们可以设置一些指令来告诉我们的程序管理者。

该参数就可以完美的设置,比如说发邮件告诉我们做一些内存清理和内存设置的工作。

OnOutOfMemoryError参数设置代码案例

上图中的例子就是设置了一下该参数,然后将内存溢出的详细信息打包成一个文件运行在jvm的脚本中。

到此这篇关于Java reservedcodecachesize虚拟机参数案例详解的文章就介绍到这了,更多相关Java reservedcodecachesize虚拟机内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java reservedcodecachesize虚拟机参数案例详解

本文链接: https://www.lsjlt.com/news/133100.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java reservedcodecachesize虚拟机参数案例详解
    一、reservedcodecachesize参数介绍 该参数是JvM虚拟机调优中调整内存大小的一个设置参数,值得大小设置直接影响到Code Cache的大小,而jvm编译的代码有常...
    99+
    2024-04-02
  • java虚拟机参数如何调整
    Java虚拟机(JVM)参数的调整可以优化应用程序的性能和稳定性。以下是一些常见的Java虚拟机参数以及如何进行调整: 堆内存大...
    99+
    2024-04-09
    java
  • Java System.getProperty()-获取系统参数案例详解
    因为所有在java.io中的类都是将相对路径名解释为起始于用户的当前工作目录,所以应该清楚当前的目录。 可以通过调用System.getProperty("user.dir");...
    99+
    2024-04-02
  • Java 虚拟机栈详解分析
    Java虚拟机栈 1. 定义 栈:线程运行时需要的内存空间,一个栈存在多个栈帧。栈具有先入后出,后入先出的特点。 栈帧:每个方法运行时需要的内存(局部变量表、操作数...
    99+
    2024-04-02
  • java虚拟机指令dup详解
    本文实例为大家介绍了java虚拟机指令dup,供大家参考,具体内容如下举个例子:public class ExceptionTest{ void cantBeZero(int i) throws Exception{ throw n...
    99+
    2023-05-31
    java dup ava
  • Java JVM虚拟机调优详解
    目录jmap查看内存信息jstackjinfo查看jvm系统参数Jstat查看堆内存使用和类加载的数量信息内存泄漏jmap查看内存信息 jmap histo /pid > ./...
    99+
    2024-04-02
  • java虚拟机之JVM调优详解
    目录JVM常用命令行参数1. 查看参数列表2. 基本参数说明:3. 扩展参数说明:虚拟机参数分类什么是调优1.调优步骤:2.调优案例2.1案例一2.2案例二JVM优化总结JVM常用命...
    99+
    2024-04-02
  • javac如何配虚拟机参数
    要为javac配置虚拟机参数,您可以使用以下命令: javac -J-Xms512m -J-Xmx1024m YourJavaFil...
    99+
    2024-04-09
    javac
  • Java虚拟机之双亲委派机制详解
    目录一、原理二、作用三、沙箱安全机制四、补充内容总结Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象...
    99+
    2024-04-02
  • python selenium参数详解和实现案例
    无头模式添加,可以让selenium模拟登录,进入到后台运行这里以登录打开公司内网下载数据为例,因为涉及私密问题,所以有些地方我们进行覆盖,还请谅解先不添加无头模式,进行登录,并且下...
    99+
    2024-04-02
  • 详解Java 虚拟机(第⑤篇)——垃圾收集
    垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。一、判断一个对象是否可被回收1. 引用计数算法为对象添加一个引用...
    99+
    2023-06-05
  • Java 虚拟机(JVM)之基本概念详解
    1、类加载子系统:负责从文件系统或者网络中加载Class信息,加载的信息存放在一块称之为方法区的内存空间。2、方法区:就是存放类信息、常量信息、常量池信息、包括字符串字面量和数字常量等。方法区是辅助堆栈的块永久区,解决堆栈信息的产生,是先决...
    99+
    2023-05-31
    java 虚拟机 基本概念
  • Java虚拟机内存区域划分详解
    在谈 JVM 内存区域划分之前,我们先来看一下 Java 程序的具体执行过程,我画了一幅图。 Java 源代码文件经过编译器编译后生成字节码文件,然后交给 JVM 的类加载器,加载...
    99+
    2024-04-02
  • JAVA虚拟机的几个命令行参数是什么
    这篇文章将为大家详细讲解有关JAVA虚拟机的几个命令行参数是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、运行class文件执行带main方法的class文件,命令行为:java注意...
    99+
    2023-06-03
  • SpringBoot之使用枚举参数案例详解
    接口开发过程中不免有表示类型的参数,比如 0 表示未知,1 表示男,2 表示女。通常有两种做法,一种是用数字表示,另一种是使用枚举实现。 使用数字表示就是通过契约形式,约定每个数字表...
    99+
    2024-04-02
  • 如何理解Java 虚拟机中HotSpot 虚拟机对象
    今天就跟大家聊聊有关如何理解Java 虚拟机中HotSpot 虚拟机对象,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、对象的创建对象的创建步骤:1. 类加载检查虚拟机遇到一条 n...
    99+
    2023-06-05
  • Java Map.entry案例详解
       Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,...
    99+
    2024-04-02
  • Java WeakHashMap案例详解
    WeakHashMap 继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映...
    99+
    2024-04-02
  • Java BigDecimal案例详解
    引言   float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提...
    99+
    2024-04-02
  • Java Assert.assertEquals案例详解
    junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数. Assert.assertEquals();及其重载方法: 1. 如果两者一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作