首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏简单的日记

    JVM内存工具

    jmap -dump:format=b,file=heap.hprof pid 打印的hprof文件,借助MemoryAnalyzer进行分析jvm中的信息

    76730发布于 2019-08-20
  • 来自专栏令仔很忙

    JVM】----内存溢出和内存泄漏

    项目的开发,涉及到了服务器的运维,先来介绍下JVM相关的知识,也方便后期的使用。今天主要是说一说内存溢出和内存泄漏两件事。 内存溢出 ---- 从字面上来说,溢出,什么是溢出? 用专业点的语言来说内存溢出,就是你申请内存容量的时候,系统无法给到你足够的内存容量大小,你申请了一个Integer类型的大小空间,但是你却往里面放long类型才能存的下的数据,这个时候就会内存溢出(Out 专业点的话就是说你向系统申请到了你想要的内存空间(new),但是使用完了之后却不归还(delete),结果你申请到的内存空间你自己也访问不到(也许你把地址搞丢了),系统也无法分配该空间给其他的程序。 内存泄漏没有什么明显的特征。本身不会有多么严重的伤害,也基本感觉不到内存泄漏。 但是可怕的是内存泄漏的堆积,时间长了,你的内存空间会一点点的变小,Memory leak最终会导致Out Of Memory,因为你的可用的内存空间会越来越小,可分配给其他程序的容量也越来越小,很容易就会造成

    1.2K10发布于 2018-09-14
  • 来自专栏Java程序员的技能宝典

    JVM性能总结:JVM内存模型,内存泄漏及解决方法,方法~

    个核,会对年轻代选择并行算法,关于选择细节请参考JVM文档。 在CPU负载不足的同时,偶尔会有用户反映请求的时间过长,我们意识到必须对程序及JVM进行。 3.JVM参数 在JVM启动参数中,可以设置跟内存、垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细才能获得最佳性能。 这个我问题毫无疑问是没有答案的,否则也就不会有。 真正熟练的使用GC,是建立在多次进行GC监控和的实战经验上的,进行监控和的一般步骤为: 1,监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和

    2.2K00发布于 2020-03-22
  • 来自专栏夕阳醉了

    JAVA系列之JVM内存

    一、前提 JVM性能牵扯到各方面的取舍与平衡,往往是牵一发而动全身,需要全盘考虑各方面的影响。在优化时候,切勿凭感觉或经验主义进行调整,而是需要通过系统运行的客观数据指标,不断找到最优解。 同时,在进行性能前,您需要理解并掌握以下的相关基础理论知识: 1、JVM垃圾收集器和垃圾回收算法 2、JVM性能监控常用工具和命令 3、JVM运行时数据区域 4、能够读懂gc日志 5、内存分配与回收策略 二、JVM内存结构 从上图可以看出,整个JVM内存是由栈内存、堆内存和永久代构成。 因此JVM内存 = 栈内存 + 堆内存 1、栈内存内存归属于单个线程,也就是每创建一个线程都会分配一块栈内存,而栈中存储的东西只有本线程可见,属于线程私有。 三、JVM常用参数 首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。

    1K50编辑于 2023-10-16
  • 来自专栏全栈程序员必看

    jvm 命令_java jvm工具

    1.3 -XX 参数(非Stable参数) 此类参数各个jvm实现会有所不同(用的最多:JVM),将来可能会随时取消,需要慎重使用; 以-XX表示的非Stable参数, JVM(Hotspot)中主要的参数可以大致分为 3类 **性能参数(Performance Options):**用于JVM的性能内存分配控制,如初始化内存大小的设置; **行为参数(Behavioral Options):**用于改变JVM的基础行为 参数 jsp + jinfo 查看某个java进程的参数,然后再调整设置 真实 java -XX:+UseG1GC xxx.jar 3 五大常用命令(一定要背下来) 3.1 JPS 查看java 5.2程序监控 前提:java 应用程序必然是正常运行的。. 目的:减少GC 频率,减少Full GC 发现现象才去解决? 45% 5.4几个面试问题 无非就是 减少GC次数、减少Full GC,提高应用程序的吞吐量 (1)内存泄漏与内存溢出的区别 内存泄漏:对象无法得到及时的回收,持续占用内存空间,从而造成内存空间的浪费

    1.2K31编辑于 2022-11-17
  • 来自专栏酒楼

    JVM

    JVM 一.升级垃圾回收器 CMS(标记-清除)——》G1(标记整理)——》ZGC(染色指针,多重映射等技术) 二.指标 1.CPU指标 查看占用CPU最多的进程 查看占用CPU最多的线程 查看线程堆栈快照信息 内存指标 // 查看当前的JVM参数配置 ps -ef | grep java // 查看Java进程的配置信息,包括系统属性和JVM命令行标志 jinfo pid // 输出Java进程当前的 gc 2.优化JVM参数配置,如年轻代内存配置过小,堆内存配置过小,元空间配置过小 四,两个案例 第一个案例:metaspace导致频繁FGC问题 1.看日志发现出现FGC的原因是metaspace空间不够 Full GC (metadata GC Threshold) 2.进一步查看日志发现元空间存在内存碎片化现象 对应GC日志: Metaspace use 35337K,capacity 56242K 一般反射调用频次达到15次就会从JNI转字节码 4.优化策略 ​ 1.适当大 metaspace的空间带下 ​ 2.优化不合理的反射调用。

    27810编辑于 2023-12-31
  • 来自专栏爱编码

    JVM

    前言 JVM是作为每一位Java程序员必备的技能。我们平时打代码一般很少接触到,只有真正部署过线上项目,并且遇到相应的非代码逻辑导致的问题时。 为了更好地使用计算机的资源,我们有必要学习一下JVM。 重要参数 例如:-Xms512m -Xmx512m -Xss1024K 这几个参数涉及配置JVM的,你都懂了? 如何 观察内存释放情况、集合类检查、对象树 上面这些工具都提供了强大的功能,但是总的来说一般分为以下几类功能 堆信息查看 查看堆信息,我们一般可以顺利解决以下问题:--年老代年轻代大小划分是否合理 方法 一切都是为了这一步,,在之前,我们需要记住下面的原则:1、多数的Java应用不需要在服务器上进行GC优化;2、多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题; 真正熟练的使用GC,是建立在多次进行GC监控和的实战经验上的,进行监控和的一般步骤为: 1,监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和

    1.7K20发布于 2019-09-17
  • 来自专栏用户8645177的专栏

    JVM

    JVM 说一下 JVM 的工具? JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是 jconsole 和 jvisualvm 这两款视图监控工具。 jconsole:用于对 JVM 中的内存、线程和类等进行监控; jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。 常用的 JVM 的参数都有哪些? -Xms2g:初始化推大小为 2g; -Xmx2g:堆最大内存为 2g; -XX:NewRatio=4:设置年轻的和老年代的内存比例为 1:4; -XX:SurvivorRatio=8:设置新生代 Eden

    61000发布于 2021-05-21
  • 来自专栏搜云库技术团队

    JVM 11 的指南:如何进行JVMJVM参数

    JVM 11的优化指南:如何进行JVM,以及JVM参数有哪些”这篇文章将包含JVM 11的核心概念、重要性、参数,并提供12个实用的代码示例,每个示例都会结合JVM参数和Java代码 这包括调整堆内存大小、选择合适的垃圾收集器,以及调整其他性能相关的参数。 JVM的重要性 提高性能:通过,可以提升应用程序的响应速度和处理能力。 企业级 JVM 11 的参数,机器配置是8核32G 为配置有8核和32GB内存的机器推荐JVM 11参数时,需考虑应用的类型、负载特性等。 以下是一套企业级的JVM参数推荐,适用于大多数中大型Java应用: 1、堆内存设置 -Xms16g:设置初始堆内存为16GB。 合理的JVM可以显著提升应用的性能和稳定性。不过,请记得是一个持续的过程,需要根据应用的具体表现来不断调整和优化。

    1.9K10编辑于 2024-01-17
  • 来自专栏博文视点Broadview

    JVM好用的内存分析工具

    点击“博文视点Broadview”,获取更多书讯 对于高并发访问量的电商、物联网、金融、社交等系统来说,JVM内存优化是非常有必要的,可以提高系统的吞吐量和性能。 通常的首选方式是减少FGC次数或者FGC时间,以避免系统过多地暂停。FGC达到理想值后,比如一天或者两天触发一次FGC。 -gcutil表示显示JVM内存使用汇总统计: 列表显示了虚拟机各个代的使用情况,描述了堆内存的使用占比和垃圾回收次数,以及占用时间,具体含义如下:  S0,第一个幸存区使用比值。 JMC Java Mission Control简称JMC,是JDK自带的工具,是一个高性能的对象监视、管理、产生时间分析和诊断的工具套件,笔者主要用来追踪热点代码与热点线程,是主要的内存优化工具。 通过连接到远程JVM进程后,可以执行飞行记录(FlightRecord),选择飞行记录存放的路径与执行时间即可,如下图所示。

    83420编辑于 2023-04-04
  • 来自专栏小工匠聊架构

    jvm性能 - 02JVM内存区域

    现在互联网大厂面试一般都必定会考核JVM相关的知识积累, 所以在了解完了JVM的类加载机制之后,先一起来看看JVM内存区域划分,这个基本上是互联网公司面试必问。 ---- 什么是JVM内存区域划分? 举个最简单的例子,比如咱们现在知道了JVM会加载类到内存里来供后续运行, 这些类加载到内存以后,放到哪儿去了呢? 所以JVM里就必须有一块内存区域,用来存放我们写的那些类。 ? 这就是为什么JVM中必须划分出来不同的内存区域,它是为了我们写好的代码在运行过程中根据需要来使用的。 接下来,我们就依次看看JVM中有哪些内存区域。 ---- 思考题 们学习了JVM中的各个内存区域,那我们在Java堆内存中分配的那些对象,到底会占用多少内存?一般怎么来计算和估算我们的系统创建的对象对内存占用的一个压力呢?

    31420发布于 2021-08-17
  • 来自专栏前端真相

    JVM

    JVM 内存 找到:catalina.sh JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m tomcat.apache.org/tomcat-7.0-doc/host-manager-howto.html java.lang.OutOfMemoryError: Java heap space 可以判断是堆内存溢出

    52140发布于 2019-03-11
  • 来自专栏HUC思梦的java专栏

    JVM

    堆设置 -Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 服务实战 服务器:8 cup, 8G mem e.g. Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 方案 : -Xmx5g:设置JVM最大可用内存为5G。 -Xms5g:设置JVM初始内存为5G。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。

    52920发布于 2020-09-03
  • 来自专栏IT云清

    jvm

    2. jinfo 查看java程序运行的环境参数,包括Java System属性和JVM命令行参数.。 JVM version is 25.201-b09 Java System Properties: java.runtime.name = Java(TM) SE Runtime Environment 物理内存的占用情况。 参数如下: -heap :打印jvm heap的情况 -histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。 JVM version is 25.201-b09 using thread-local object allocation.

    1.1K20发布于 2019-06-14
  • 来自专栏Java EE 企业级开发工作日志

    JVM 系列 1:“精通 JVM ,有过 JVM 经验”,简历敢写吗?

    、新生代 5.1.2、老年代 总结 ---- 前言 现在除了一些有工作和开发经验的大神,基本很少有人在简历上敢写“精通 JVM ,有过 JVM 经验”,因为应聘者如果写这句话就意味着你的面试将会是很 既然 JVM 如此重要,那我就在本系列中完整的过一遍,让你敢于在简历上写“精通 JVM ,有过 JVM 经验”,薪资涨 5k! ---- 在聊 JVM 和 GC 之前,我们先看看当下就业环境中面试对于 JVM 和 GC 的一些相关面试题,看看企业开发岗需要什么样的人才。 1.2、顺丰 怎么判断内存泄漏? 讲一下 CMS 的流程。 1.3、京东 为什么压缩指针超过 32G 失效? 1.4、淘宝 什么是内存泄漏?GC 有经验吗?一般出现 GC 问题你怎么解决? 在默认情况下 JDK 1.8 没有参数、用的就是 GC 的分代模型。

    95411发布于 2021-03-20
  • 来自专栏cwl_Java

    JVM性能-Java内存区域⽅法区

    简介:JVM内存模型之⽅法区 1.是什么? 是各个线程共享的内存区域,它⽤于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 什么是类信息:类版本号、⽅法、接⼝ 2.为什么? 内存中存放类信息、静态变量等数据,属于线程共享的⼀块区域 Hotspot使⽤永久代来实现⽅法区 JRockit、IBM J9VM Java堆⼀样管理这部分内存 3.特点 并⾮数据进⼊了⽅法区就如永久代的名字 这区域的内存回收⽬标主要是针对常量池的回收和对类型的卸载 ⽅法区也会抛出OutofMemoryError,当它⽆法满⾜内存分配需求时

    37620发布于 2019-12-20
  • 来自专栏纯洁的微笑

    Tomcat 性能JVM

    因此在对Web 容器( 应用服务器) 的中必不可少的是对于 JVM。 对于 JVM,主要有两个方面考虑: 内存大小配置 垃圾回收算法选择 当然,确切的说,以上两点并不互相独立,内存的大小配置也会影响垃圾回收的执行效率。 其中内存大小配置,最主要做的有 确定内存占用的总大小 确定内存中各个代(Gen) 的大小划分 内存大小配置 所谓内存大小的占用,是指应用程序启动后稳定运行一小段时间时,观察到的内存占用情况。 延迟、吞吐量 其他 JVM 配置 垃圾回收算法对应到的就是不同的垃圾收集器,具体到在 JVM 中的配置,是使用 -XX:+UseParallelOldGC 或者 -XX:+UseConcMarkSweepGC 所谓,就是一个不断调整和优化的过程,需要观察、配置、测试再如此重复。有相关经验的朋友欢迎留言补充! 说到底,那上面的这些选项是要配置在哪里呢?

    2K30发布于 2019-05-06
  • 来自专栏cwl_Java

    JVM性能-Java内存区域Java堆

    是Java内存区域中⼀块⽤来存放对象实例的区域, 【⼏乎所有的对象实例都在这⾥分配内存】 2.为什么? 此内存区域的唯⼀⽬的就是存放对象实例 Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最⼤的⼀块 Java 堆是被所有线程共享的⼀块内存区域 3.特点 Java 堆是垃圾收集器管理的主要区域

    43430发布于 2019-12-20
  • 来自专栏松华说

    JVM分享

    -Xms<size>和-Xmx<size> 前者表示JVM初始化堆的大小,后者表示JVM堆的最大值。一般把Xms与Xmx两个值设成一样是最优的做法,否则会导致jvm有较为频繁的GC,影响系统性能。 根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一 个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 保底配置 背景: 线上频繁发生报警(堆内存占用超过80%),大堆内存到6144m、调整GC策略后依然存在问题,分析dump文件发现主要数据为char[]、String等类型的临时数据,暂增加保底策略 ,堆内存达到70%后强制CMS GC。 考虑增大年轻代内存、eden与survivor分配策略。

    1.2K31发布于 2019-11-05
  • 来自专栏令仔很忙

    JVM(一)】----JAVA内存模型抽象结构

    线程之间的通信机制有两种:共享内存和消息传递。 Java线程之间的通信由Java内存模型(JMM)控制,JMM控制一个线程对共享变量的写入什么时候对另一个线程可见。 线程之间的共享变量存储在主内存中(Main Memory),每一个线程都有自己的本地内存(Local Memory),本地内存中存储着读/写共享变量的副本。 由上图可以看出,线程之间的通信由两个步骤: 线程A把修改后的本地内存中的共享变量更新到主内存中去 线程B到主内存中读取线程A之前更新过的共享变量 ? 从整体上看,这就是线程A在向线程B发送消息,而且这个消息必须经过主内存。JMM通过控制主内存与每个线程的本地内存之间的交互,来为Java程序员提供内存可见性保证。

    54110发布于 2018-09-14
领券