JVM故障诊断和性能优化 读书笔记(1)

第二章

  • 类加载系统负责从文件系统加载class信息,加载类信息存储在方法区中,方法区中还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)

  • 栈帧从java栈中被弹出有两种情况

    • 正常返回,return返回
    • 抛出异常
  • 栈帧中至少包含局部变量表,操作数栈和帧数据区几部分 被局部变量表直接或间接引用的对象不会被垃圾回收

  1. 帧数据区保留访问常量池的指针,方便访问
  2. 函数返回或异常,需要恢复调用者栈帧
  3. 当出现错误,需要一个异常处理表(以上三小点都存在帧数据区)
  • 栈上分配,不分配在堆上,可以在函数调用后自行销毁,不需要GC介入

第三章 常用虚拟机参数

虚拟机日志相关

  1. -XX:+PrintGC   打印gc日志
  2. -XX:+PrintGCDetails    更加详细的gc日志,还会使虚拟机在退出前打印堆的详细信息
  3. -XX:+PrintHeapAtGC  jdk9删除,打印GC前后的堆使用情况
  4. -XX:+PrintGCTimeStamps  打印GC的时间,为虚拟机启动时的偏移量
  5. -XX:+PrintGCApplicationConcurrentTime 应用程序的执行时间
  6. -XX:+PrintGCApplicationStoppedTime 打印由于GC而导致停顿时间
  7. -XX:+PrintReferenceGC 用于跟踪软引用,虚引用等
  8. -Xloggc:log/gc.log 指定gc日志以文件形式存储,默认是打印到java控制台

类的加载/卸载的跟踪

1.可以使用参数-verbose:class

2.-XX:+TraceClassLoading  跟踪类的加载

3.-XX:+TraceClassUnloading  跟踪类的卸载

系统参数查看

1. -XX:+PrintVMOptions  打印虚拟机接受到的命令行显示参数。

eg: 控制台输出 

   VM option '+TraceClassLoading'
   VM option '+PrintVMOptions'
  1. -XX:+PrintCommandLineFlags  打印传递给虚拟机的显示和隐式参数,隐式参数包括:命令行、虚拟机自行启动的默认参数
eg: 控制台输出

-XX:InitialHeapSize=132318080 -XX:MaxHeapSize=2117089280 -XX:+PrintCommandLineFlags 
-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation

堆参数配置

1.-Xmx 最大可用内存

2.-Xms 指定初始堆内存

3.-Xmn 可以设置新生代的大小。设置一个较大的新生代会减少老年代的大小。一般新生代是老年代的1/3-1/4

4.-XX:SurvivorRatio  用来设置新生代中eden空间和form/to空间的比例关系。含义:  -XX:SurvivorRatio=eden/form=eden/to

5.-XX:NewRatio=老年代/新生代  来设置新生代与老年代的比例

提示:在实际工作中,可以直接将初始堆-Xms和最大堆-Xmx设置相等。好处是可以减少程序运行时进行的垃圾回收次数。提高程序的性能新生代的设置

XX:+HeapDumpOnOutOfMemoryError,使用此参数,可以在内存溢出时到处整个堆内存信息。配合使用的有-XX:HeapDumpPath,可以指出堆内存的存放路径

方法区和线程栈的设置

  • 在jdk1.6,jdk1.7版本中,可以使用-XX:PermSize配置初始的永久区大小,-XX:MaxPermSize配置最大永久区

  • 在jdk1.8中,永久区被彻底删除,使用新的元数据区存放类的元数据,默认情况下,元数据区只受系统可用内存的限制。
    可以使用参数-XX:MaxMetaspaceSize指定永久区最大可用值,

-Xss  参数配置java栈大小

直接内存和堆内存分配

-XX:MaxDirectMemorySize  设置最大可用直接内存,如不设置,默认值为最大堆空间,当直接内存使用量达到MaxDirectMemorySize值时,就会触发垃圾回收,如果不能有效释放足够空间,直接内存溢出依然会引起系统的OOM。

访问速度:直接内存>堆内存
内存分配速度:直接内存<堆内存
所以直接内存适合于申请次数少,但访问频繁的场合
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值