• 监控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)

    用一个例子来演示会更加清晰
  • 相关阅读:
    各种知识点
    链表
    滑动窗口
    数组

    【转】无重复字符的最长子串
    【转】荷兰国旗问题 三指针排序
    【转】回溯思想团灭排列、组合、子集问题
    【LeetCode】45. 跳跃游戏 II
    动态分配内存初始化二维数组
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/15257585.html
Copyright © 2020-2023  润新知