JVM参数

JVM 内存参数 它屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在各种平台上不加修改的运行。‌例如,‌可以将最小堆内存设置为2GB(‌-Xms2048m)‌,‌最大堆内存设置为4GB(‌-Xmx4096m)‌。如果初始化的高水位线设置过低,会频繁的触发FullGC,高水位线会被多次调整。一般来说,垃圾回收器都会有默认的对象晋升到老年代的年龄参数阈值,CMS默认是6,G1默认是15,不过这参数值也不是一成不变的,它会根据动态年龄判断规则来重新被赋值。 阅读详情

 

JVM参数命令行选项主要有3类:标准选项、非标准选项和非稳定选项。
     标准选项是要求所有Java虚拟机都必须实现的选项。
     非标准选项(以-X为前缀)不保证、也不强制所有JVM实现都必须支持。
     非稳定选项(以-XX为前缀)通常是为了特定的需要而对JVM的运行进行校正,并且可能需要有系统配置参数的访问权限。

对于带有布尔标记的非稳定选项来说,选项名前的+或-表示true或false,用以开启或关闭特定的HotSpot VM特性或参数。

堆大小设置:
-Xmx3550m:设置JVM最大可用内存为3550M。

-Xms3550m:设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmn2g:设置年轻代大小为2G。整个堆大小 = 年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。-XX:NewSize=2g也一样效果。

-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5。

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6。

-XX:MaxPermSize=16m:设置持久代大小为16m。

-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。
回收器选择:

 

 

1.与串行(Serial)收集器相关:
-XX:+UseSerialGC:在新生代和老年代使用串行收集器。

2.与并行(ParNew)收集器相关:
-XX:+UseParNewGC:在新生代使用并行收集器,老年代使用串行回收器。
-XX:ParallelGCThreads=8:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。年轻代的并行收集线程数默认是(ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8)。

3.与并行回收(Parallel Scavenge)收集器相关:
-XX:+UseParallelGC:新生代使用并行回收收集器。此配置仅对年轻代有效,此时老年代则默认使用串行收集器。

-XX:+UseParallelOldGC:指定新生代和老年代都使用并行回收收集器。

-XX:MaxGCPauseMillis=100:参数允许的值是一个大于0的毫秒数,收集器将尽可能地保证内存回收话费时间不超过设定值。收集器在工作时,会自动调整Java新生代大小,尽可能把停顿时间控制在设定值。如果希望减少停顿时间,而把此值设得很小,JVM会以牺牲吞吐量和新生代空间为代价来换取预期的停顿时间。

-XX:GCTimeRatio:设置吞吐量大小,参数的值应当是一个大于0且小于100的整数,也就是垃圾收集时间占总时间的比率。默认情况下值为99,表示不超过1/(1+99)=1%的时间用于垃圾收集。

-XX:+UseAdaptiveSizePolicy:设置此选项后,并行回收收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行回收收集器时打开,就不需要手工指定新生代大小、Eden与Survivor区的比例、晋升老年代对象年龄等细节参数了。

-XX:ParallelGCThreads=8:也可以用于设置此收集方式下垃圾回收的线程数量。


4.CMS(Concurrent Mark Sweep)收集器
整个收集过程:CMS initial-mark -> CMS-concurrent-mark -> CMS-concurrent-preclean -> CMS-remark -> CMS-concurrent-sweep -> CMS-concurrent-reset

-XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。最新的JVM版本,当使用-XX:+UseConcMarkSweepGC时,-XX:UseParNewGC会自动开启。因此,如果年轻代的并行GC不想开启,可以通过设置-XX:-UseParNewGC来关掉。

-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。

-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。CMS是不会整理堆碎片的,因此为了防止堆碎片引起full gc,通过会开启CMS阶段进行合并碎片,开启这个选项一定程度上会影响性能,但是可以消除碎片,可以通过配置适当的CMSFullGCsBeforeCompaction来调整性能。

-XX:CMSFullGCsBeforeCompaction=5:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

-XX:+CMSConcurrentMTEnabled:当该标志被启用时,并发的CMS阶段将以多线程执行(因此,多个GC线程会与所有的应用程序线程并行工作)。该标志已经默认开启,如果顺序执行更好,这取决于所使用的硬件,多线程执行可以通过-XX:-CMSConcurremntMTEnabled禁用。

-XX:ConcGCThreads

 

       标志-XX:ConcGCThreads=<value>定义并发CMS过程运行时的线程数。比如value=4意味着CMS周期的所有阶段都以4个线程来执行。尽管更多的线程会加快并发CMS过程,但其也会带来额外的同步开销。因此,对于特定的应用程序,应该通过测试来判断增加CMS线程数是否真的能够带来性能的提升。
       如果还标志未设置,JVM会根据并行收集器中的-XX:ParallelGCThreads参数的值来计算出默认的并行CMS线程数。该公式是ConcGCThreads = (ParallelGCThreads + 3)/4。因此,对于CMS收集器,-XX:ParallelGCThreads标志不仅影响“stop-the-world”垃圾收集阶段,还影响并发阶段。
       建议第一次运行CMS收集器时使用其默认设置, 然后如果需要调优再进行测试。只有在生产系统中测量(或类生产测试系统)发现应用程序的暂停时间的目标没有达到 , 就可以通过这些标志应该进行GC调优。

-XX:CMSInitiatingOccupancyFraction -XX:+UseCMSInitiatingOccupancyOnly
       当堆满之后,并行收集器便开始进行垃圾收集,例如,当没有足够的空间来容纳新分配或提升的对象。对于CMS收集器,长时间等待是不可取的,因为在并发垃圾收集期间应用持续在运行(并且分配对象)。因此,为了在应用程序使用完内存之前完成垃圾收集周期,CMS收集器要比并行收集器更先启动。
       因为不同的应用会有不同对象分配模式,JVM会收集实际的对象分配(和释放)的运行时数据,并且分析这些数据,来决定什么时候启动一次CMS垃圾收集周期。为了引导这一过程, JVM会在一开始执行CMS周期前作一些线索查找。该线索由 -XX:CMSInitiatingOccupancyFraction=<value>来设置,该值代表老年代堆空间的使用率。比如,value=75意味着第一次CMS垃圾收集会在老年代被占用75%时被触发。通常CMSInitiatingOccupancyFraction的默认值为68。

       用-XX+UseCMSInitiatingOccupancyOnly标志来命令JVM不基于运行时收集的数据来启动CMS垃圾收集周期,而是通过CMSInitiatingOccupancyFraction的值进行每一次CMS收集,而不仅仅是第一次。然而,请记住大多数情况下,JVM比我们自己能作出更好的垃圾收集决策。因此,只有当我们充足的理由并且对应用程序产生的对象的生命周期有深刻的认知时,才应该使用该标志。


-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
       相对于并行收集器,CMS收集器默认不会对永久代进行垃圾回收。如果希望对永久代进行垃圾回收,可用设置标志-XX:+CMSClassUnloadingEnabled。在早期JVM版本中,要求设置额外的标志-XX:+CMSPermGenSweepingEnabled。注意,即使没有设置这个标志,一旦永久代耗尽空间也会尝试进行垃圾回收,但是收集不会是并行的,而再一次进行Full GC。

-XX:+CMSParallelRemarkEnabled
      为了减少第二次暂停的时间,开启并行remark。如果remark还是过长的话,可以开启-XX:+CMSScavengeBeforeRemark 选项,强制remark之前开始一次minor gc,减少remark的暂停时间(因为remark标记的是最近修改的内容,最近变化的内容往往在Young区),但是在remark之后也将立即开始又一次minor gc。
 

 

辅助配置:
-verbose:gc -XX:+PrintGC -XX:+PrintGCDetails
-XX:+Printetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间。
-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间。
-XX:PrintHeapAtGC:打印GC前后的详细堆栈信息

 

-Xloggc:filename

 


两种fail引起full gc :Prommotion failed和Concurrent mode failed。
     这个问题的产生是由于Survivor空间不够,从而向年老代转移对象,年老代没有足够的空间来容纳这些对象,导致一次full gc的产生。
     解决这个问题的办法有两种完全相反的倾向:增大Survivor空间、增大年老代或者去掉Survivor空间。
     增大Survivor空间就是调整-XX:SurvivorRatio参数,这个参数是Eden区和Survivor区的大小比值,默认是32,也就是说Eden区是Survivor区的32倍大小,要注意Survivo是有两个区的,因此Surivivor其实占整个young genertation的1/34。调小这个参数将增大survivor区,让对象尽量在survitor区呆长一点,减少进入年老代的对象。
     去掉Survivor空间的想法是让大部分不能马上回收的数据尽快进入年老代,加快年老代的回收频率,减少年老代暴涨的可能性,这个是通过将-XX:SurvivorRatio 设置成比较大的值(比如65536)来做到。在我们的应用中,将young generation设置成256M,这个值相对来说比较大了,而Survivor空间设置成默认大小(1/34),从压测情况来看,没有出现prommotion failed的现象,年轻代比较大,从GC日志来看,minor gc的时间也在5-20毫秒内,还可以接受,因此暂不调整。

      Concurrent mode failed的产生是由于CMS回收年老代的速度太慢,导致年老代在CMS完成前就被占满,引起full gc,避免这个现象的产生就是调小-XX:CMSInitiatingOccupancyFraction参数的值,让CMS更早更频繁的触发,降低年老代被占满的可能。

 

 

 

 

 

 

FPGA远程升级避坑指南:用AXI Quad SPI IP读写N25Q128 Flash的完整流程 本文详细介绍了FPGA远程升级过程中使用AXI Quad SPI IP读写N25Q128 Flash的完整流程,包括IP核配置、Flash操作指令集、双镜像备份设计及生产级远程升级协议。通过最佳实践和避坑策略,帮助开发者实现可靠的镜像更新方案,提升系统可靠性和可维护性。 阅读详情

相关推荐

无人机巡检提速3倍!YOLOv8n+OpenVINO让Jetson Nano跑25FPS,还能多飞25分钟

摘要(149字): 针对无人机巡检中Jetson Nano算力不足导致的帧率低、首次推理延迟高、续航短等问题,提出YOLOv8n+OpenVINO联合优化方案: 模型轻量化:YOLOv8n参数量仅3.2M(较v8s减少71%),Jetson Nano帧率从8FPS提升至15FPS(原生),绝缘子裂纹召回率仅降3%; OpenVINO加速:AUTO模式动态分配CPU/GPU算力,首次推理延迟从500ms降至200ms,帧率再优化至25FPS; 能效提升:功耗降低40%,单次续航延长25分钟。方案已落地电力/林

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1242

JVM-常见JVM参数、如何查看JVM参数、如何动态设置JVM参数

1 JVM参数 1.1 标准参数 // 查看java版本 -version // help命令就不用了说了吧 -help // -server // 指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符, // window上分号“;”.Linux下使用“:” -cp 1.2 -x参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xi...

抠脚的汉子 2606

一种4位sar adc仿真验证

4位sar adc采用下图的电容阵列,电路如下图:所有电容的正端(也称为上极板)与比较器的反相端连接,比较器同相端接Vin,其工作过程进行大致分析见之前的文章《一种4位sar adc工作过程推导(三)》,下面对这个电路进行仿真验证。 两个参考电压VrefPV_{refP}VrefP​和VrefNV_{refN}VrefN​,V+=VinV_{+}=V_{in}V+​=Vin​,假设1116(VrefP−VrefN)+VrefN<Vin<1216(VrefP−VrefN)+VrefN\frac{

大学生视野 1954

jvm 参数_JVM参数概览

一、JVM参数分类1. 标准参数(-)所有的JVM实现都必须实现这些参数的功能,而且向后兼容。命令 java -help可以列出java 应用启动时标准选项(不同的JVM实现是不同的)。2. 非标准参数(-X)默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容。java -X可以列出不标准的参数(这是JVM的扩展特性)。-X相关的选项不是标准的,被改变也不会通知。3....

weixin_39911998的博客 7695

差分运放实战:如何快速计算带直流偏置的电路(附详细推导步骤)

本文详细解析了差分运放电路在带直流偏置设计中的核心计算方法和实战技巧。通过可视化参数关系和分步拆解,帮助工程师快速掌握电路设计精髓,包括虚短虚断原理、偏置电压计算及非理想因素处理,提升信号调理和传感器接口设计的效率与精度。

o4p5q6r7s的博客 409

使用DCA1000和EVM板进行数据采集

目录 1. 准备工作 1.1 硬件 1.2 软件 2. 驱动安装 3. 设置静态IP地址 4. 采集数据 5. 采集的数据文件的格式 6. 数据采集存储的数据流 参考资料 1. 准备工作 1.1 硬件 EVM板,电源线(5V,>2.5A),USB线 DCA1000,电源线(5V,>2A),USB线,网线,60pin Samtec cable 1.2 软件 mmWave Studio Matlab Runtime Engine v8.5.1 将DCA1000和EVM板

qq_42235129的博客 1万+

JVM学习之路(七)——JVM配置参数

七、JVM配置参数 一、jvm配置参数分为3大类: 1、跟踪参数:跟踪、监控JVM状态,用于程序员JVM调优及故障排查 2、堆分配参数:分配堆内存 3、栈分配参数:分配栈内存 二、各类配置参数常用参数: 1、常用跟踪监控参数: ①打印gc简要信息 第一个:-XX:+PrintGC 第二个:-verbose:gc 这2个参数效果一样,都是在发生gc时,打印gc简要信息的。以 1...

u012556994的博客 3万+

硬件测试之—纹波测试为什么不要使用接地夹子

示波器为什么不推荐使用接地夹

qq_19294353的博客 2988

jvm参数都有哪些

常见JVM参数包括:内存设置:-Xms(初始堆)、-Xmx(最大堆)、-Xss(线程栈)垃圾回收器:-XX:+UseG1GC(G1回收器)、-XX:+UseParallelGC(并行回收)监控调试:-XX:+HeapDumpOnOutOfMemoryError(OOM生成堆转储)性能优化:-XX:MaxMetaspaceSize(元空间上限)日志参数:-Xloggc(GC日志路径)

weixin_46084191的博客 2510

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 229

猿创征文|Qt 文件和目录应用讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】

Qt 文件和目录精准讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】【QFileDialog】 第一章 QCoreApplication类 第一节 QCoreApplication常用函数方法 第二节 QCoreApplication举例 第二章 QFile类 第一节 静态函数方法 第二节 成员函数方法 第三章 QFileInfo类 第一节 常用函数方法 第四章 QDir类

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 941

JVM10:JVM参数分类,JVM标准参数,JVM非标准参数,-X参数,-XX参数,其他参数;查看JVM参数,idea控制台输出JVM参数,单位换算;设置JVM参数的常见方式;常用JVM参数及含义

值得注意的是"=“表示默认值,”:="表示被用户或JVM修改后的值(JVM启动时也会修改一些参数的值,:=并不都是你设置的)通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)使用得最多的参数类型,也是非标准化参数,相对不稳定,主要用于JVM调优和Debug。要想查看某个进程具体参数的值,可以使用jinfo,这块后面聊。一般要设置参数,可以先查看一下当前参数是什么,然后进行修改。JVM参数分为两类,一类是标准参数。

郝开的博客 958

在 Linux 64 位上遭遇 Signal 7 与 ST22 SYSTEM_CORE_DUMPED:从 es/implementation=std 到 /dev/shm 的一套落地排查法

摘要: Linux 64位SAP系统出现SYSTEM_CORE_DUMPED和Signal 7(对应SIGBUS)错误时,核心问题是进程因共享内存资源异常被操作系统强制终止。主要诱因包括:1)/dev/shm的tmpfs默认容量不足(通常仅占物理内存50%);2)SAP内存管理参数es/implementation=map在64位场景下的敏感性。解决方案应双管齐下:在实例profile设置es/implementation=std以降低对tmpfs的依赖,同时按(RAM+Swap)*75%重新配置/dev/

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

正确配置JVM参数-附JVM参数详解

一、内存配置参数 1、参数详解 JVM参数类型 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容。 非标准参数(-X) 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容。 非Stable参数(-XX) 此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用 JVMc参数几种类型说明: 布尔型参数选项:-XX:+ 打开, -XX:- 关闭。 数字型参数选项通过-XX:=设定。 字符行参数选项通过-XX:=设定,通常用来指定一个文件,路径,

beauty-coding 的博客 8810

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JVM参数及命令

JVM参数 1、jvm三种参数类型 标准参数 -help:输出此帮助消息。 -cp:目录和 zip/jar 文件的类搜索路径。 -version:输出产品版本并退出。 -D<名称>=<值>:设置系统属性。 -showversion:输出产品版本并继续。 -X参数(非标准参数) -Xint:解释模式,编译快 运行慢。 -Xcomp:编译模式,编译慢 运行快(一次编译...

T_chuxin的博客 1137

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JVM优化一:JVM参数

JVM优化一:参数 1、JVM优化 对于普通开发人员来说,JVM调优是个陌生的话题.毕竟,大家平常的工作中,基本上就是只负责代码的开发,甚至有的只是负责某个应用中某一功能的开发. 不过呢,虽然现在工作上遇不到,但是万一遇到的时候,别人不会,你会呢?所以,还是要可以学一下的 为什么JVM要优化?简单来说是为了让我们开发的应用使用起来更稳定,跟顺畅.更直白点的话,就是JVM的资源是有限的,而应用产生的数据是无限的.我们需要将无限的数据放到有限的容器中.所以,我们就需要对有限的资源进行优化. 2、JVM的运行..

不善言谈者 776

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JVM参数详解

# 一、JVM参数 ## 1.1 标准参数 -version -help -server -cp ## 1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 ## 1.3 -XX参数 使用得最多的参数类型,非标准化参...

La victoria的博客 1123

JVM系列——JVM参数及如何设置

关注“Java后端技术栈”回复“面试”获取最新资料本次主要内容:如何查看参数标准参数-X参数-XX参数Boolean类型非Boolean类型其他参数如何设置参数单位换算JVM常见参数和...

田维常 1071

为什么需要对jvm进行优化,jvm运行参数之标准参数

如果是其他操作系统上,机器配置有2GB以上的内存同时有2个以上CPU的话默认使用server模式,否则使用client模式。在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行。它们的区别是Server VM的初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢运行快。如果是Windows系统,不论硬件配置如何,都默认使用Client类型的JVM。jvm的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变,可以使用。说明:使用的jdk版本为1.8。检索出所有的标准参数。

write less , do more 1179

JVM参数总结

在本篇文章中,你将掌握最常用的 JVM 参数配置。

Mr.W的博客 1286

jvm参数

jvm常见参数类型 标配参数 如Java -version -X参数 -XX参数 我们jvm调优时主要调的就是这类参数 如何查看当前的jvm参数 1.首先查看java应用的进程Id: jps -l E:\spring-boot\spring-boot-quickstart>jps -l 10016 org.jetbrains.jps.cmdline.Launcher 7252 ...

zzh_spring的博客 413

JVM学习--JVM运行时参数

XX:+PrintFlagFinal,输出所有参数的名称和默认值,默认不包括 Diagnostic 和 Experimental 的参数,可以配合 -XX:+UnlockDiagnosticVMOptions 和 -XX:UnlockExperimentalVMOptions 使用。举例:-XX:-UseParallelGC 不使用并行垃圾收集器,-XX:+UseG1GC 启用G1垃圾收集器,-XX:+UseAdaptiveSizePolicy 自动选择年轻代区大小和相应的Survivor区比例。

weixin_44810581的博客 1486

jvm参数分类

JVM参数的分类 常用的JVM参数可以大致的分为三类,下边简单的将JVM的参数做一个分类,作为一个JVM参数的简单总结。 JVM标准参数 JVM的标准参数是指的在各个JDK版本中都比较稳定的,不会变动的参数,一般是针对jdk全局的参数。 比如 -help -server -client -version -showversion -cp -classpath 这种参数称之为标准参数。 JVM...

zlj1217的博客 1118

【JVM】JVM参数释义

文章目录0、前言1、JVM参数1.1、JVM堆参数1.2、JVM垃圾回收器参数1.2.1、串行收集器1.2.2、并行收集器(吞吐量优先)1.2.3、并发收集器(响应时间优先)1.2.4、其它垃圾回收参数1.3、JVM辅助信息参数1.4、JVM其他参数2、案例-JVM调优参数说明2.1、服务器配置2.2、参数方案2.3、调优说明 0、前言 JVM对内存的自动管理(内存分配和垃圾回收)使得Java程序...

C1248770189的专栏 431

调整JVM参数的方式

调整JVM参数的方式取决于你的运行环境。无论是命令行、IDE、应用服务器、Spring Boot、Docker还是Kubernetes,都可以通过配置相应的参数来优化JVM性能。注:改文章只整理了大多数运行环境调参方式。如果需要了解如何调参可参考(

hsisbsjskknxbs的博客 2468
上一篇: 《Spring.3.x企业应用开发实战》--- 零碎笔记
下一篇: JMockit简单使用
zero__007
博客等级 码龄12年 326粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值