1、jmap -histo <pid>可以查看指定pid的jvm内存状况2、jmap -dump:file=dump.txt <pid>以将指定pid的jvm中堆信息输出到文件中在服务器上,这个文件比较大,我在公司的服务器上生成的文件2.3G所以,最好不要在服务器上分析这个文件可以将文件拷贝到本地,CRT可以用sz命令将文件下载到本地3、jhat -J-Xmx40
GC停顿:在可达性分析的过程中,对象引用关系不再发生变化,需要停顿所有线程(安全点)OopMap:保存CGrootsOopMap收集数据的时机:SafePoint时抢先式中断:在GC发生时,把所有线程终端,如果发现有线程中断的地方不在安全点上,就恢复线程,让其执行到安全点上主动式中断:当GC需要中断线程的时候,不直接对线程操作,只设置一个标识,各个线程执行时主动去检查这个标识,如果发现需要中断的时
1、标记-清除标记出需要回收的对象在标记完成后统一回收所有被标记的对象不足:效率不高,产生内存碎片太多2、复制算法将整个内存等分为两块当一块的内存用完了将存活的对象复制到另一块上面将刚使用过的这块内存清理优点:实现简单,运行高效,没有碎片产生不足:空间代价高,将内存缩小了一半3、标记-整理算法让所有存活的对象都向一端移动清理调端边界以外的内存4、分代收集将Java堆分为新生代和老年代新生代:每次垃
Java对象在虚拟机中有两种访问方式:通过句柄访问对象Java堆中有一块内存为句柄池Java本地栈中的reference存储的是句柄池中的句柄地址句柄中包含了对象实例数据地址(堆中的实例池)和对象类型数据地址(方法区)通过指针访问对象reference中存储的是对象地址对象中存储类型数据地址优缺点:句柄的存储比较稳定,对象的移动不影响reference指针的好处是速度快,节省了一次指针定位的时间开
Java对象在内存中的存储分3块区域1、对象头(Header)2、实例数据(Instance Data)3、对齐填充(Padding)一、对象头哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳类型指针二、实例数据各种类型的字段(父类继承下来的、子类自身定义的)相同宽度的字段会被分配到一起三、对齐填充没有特别含义,仅仅起着占位符的作用(8字节的整数倍)
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号