深入JVM内核——原理、诊断与优化第8周法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站(OOM)的原因MAT使用基础浅堆(ShallowHeap)与深堆(RetainedHeap)显示入引用(ing)和出引用(outgoing)支配树使用VisualVM分析堆TomcatOOM分析案例内存溢出(OOM)的原因在JVM中,有哪些内存区间?堆永久区线程栈直接内存内存溢出(OOM)的原因堆溢出publicstaticvoidmain(Stringargs[]){ArrayList<byte[]>list=newArrayList<byte[]>();for(inti=0;i<1024;i++){(newbyte[1024*1024]);}}占用大量堆空间,直接溢出Exceptioninthread"main":(:14)解决方法:增大堆空间,及时释放内存内存溢出(OOM)的原因永久区生成大量的类publicstaticvoidmain(String[]args){for(inti=0;i<100000;i++){CglibBeanbean=newCglibBean(""+i,newHashMap());}}Causedby::PermGenspace[FullGC[Tenured:2523K->2523K(10944K),]2523K->2523K(15936K),[Perm:4095K->4095K(4096K)],][Times:user==,real=]Heapdefnewgenerationtotal4992K,used89K[0x28280000,0x287e0000,0x2d7d0000)edenspace4480K,2%used[0x28280000,0x282966d0,0x286e0000)fromspace512K,0%used[0x286e0000,0x286e0000,0x28760000)tospace512K,0%used[0x28760000,0x28760000,0x287e0000)tenuredgenerationtotal10944K,used2523K[0x2d7d0000,0x2e280000,0x38280000)thespace10944K,23%used[0x2d7d0000,0x2da46cf0,0x2da46e00,pactingpermgentotal4096K,used4095K[0x38280000,0x38680000,0x38680000)thespace4096K,99%used[0x38280000,0x3867fff0,0x38680000,0x38680000)rospace10240K,44%used[0x38680000,0x38af73f0,0x38af7400,0x39080000)rwspace12288K,52%used[0x39080000,0x396cdd28,0x396cde00,0x39c80000)解决方法:增大Perm区允许Class回收内存溢出(OOM)的原因Java栈溢出这里的栈溢出指,在创建线程的时候,需要为线程分配栈空间,这个栈空间是向操作系统请求的,如果操作系统无法给出足够的空间,就会抛出OOM堆空间线程栈空间操作系统可分配内存溢出(OOM)lassSleepThreadimplementsRunnable{publicvoidrun(){try{(10000000);}catch(InterruptedExceptione){();}}}publicstaticvoidmain(Stringargs[]){for(inti=0;i<1000;i++){newThread(newSleepThread(),"Thread"+i).start();("Thread"+i+"created");}}-Xmx1g-Xss1mExceptioninthread"main"
Java堆分析昕昕网络教程 来自淘豆网m.daumloan.com转载请标明出处.