zoukankan      html  css  js  c++  java
  • 监控IVM -性能调优 通过-Xms -Xmx限定其最小、最大值

    1.  Q:为什么Full GC的次数越来越多?

     A:因此内存的积累,逐渐耗尽了年老代的内存,导致新对象分配没有更多的空间,从而导致频繁的垃圾回收

    2 .Q:为什么年老代占用的内存越来越大?

       A:因为年轻代的内存无法被回收,越来越多地被Copy到年老代

    3. Q:为什么崩溃前垃圾回收的时间越来越长?

    A:根据内存模型和垃圾回收算法,垃圾回收分两部分:内存标记、清除(复制),
    标记部分只要内存大小固定时间是不变的,变的是复制部分,


    因为每次垃圾回收都有一些回收不掉的内存,所以增加了复制量,
    导致时间延长。所以,垃圾回收的时间也可以作为判断内存泄漏的依据

    通过-Xms -Xmx限定其最小、最大值(JVM性能调优 - 每天进步一点点! - ITeye博客

    为了防止垃圾收集器在最小、最大之间收缩堆而产生额外的时间,我们通常把最大、最小设置为相同的值
    请看一下一个时间的Java参数配置:(服务器:Linux 64Bit,8Core×16G)
    
     
    
     JAVA_OPTS="$JAVA_OPTS -server -Xms3G -Xmx3G -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/aaa/dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/usr/aaa/dump/heap_trace.txt -XX:NewSize=1G -XX:MaxNewSize=1G"
    
    经过观察该配置非常稳定,每次普通GC的时间在10ms左右,Full GC基本不发生,或隔很长很长的时间才发生一次

     JVM监控

      • JVM堆内存监控
      • GC次数和耗时
      • JVM线程数监控

     Tomcat监控选型及实践 - 知乎 (zhihu.com)

    用一个例子来演示会更加清晰
  • 相关阅读:
    Linux 守护进程创建
    Linux 进程
    静态库与动态库的制作
    目录文件的操作函数 mkdir ,opendir,readdir,closedir
    获取文件或目录的属性 stat 函数
    文件IO 例子
    文件 IO
    标准 IO fread 与 fwrite 的使用(可以实现二进制流的读写)
    bzoj 2716: [Violet 3]天使玩偶
    cf1175 DE
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/15257585.html
Copyright © 2011-2022 走看看