第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【備戰(zhàn)春招】第2天+模擬內(nèi)存溢出

標(biāo)簽:
Java

课程名称:Java生产环境下性能监控与调优详解

课程章节:第二章

主讲老师:若鱼1919

课程内容:

  1. 模拟堆内存溢出,还有栈内存溢出

    1. -XX:MetaspaceSize=32M -XX:MaxMetaspaceSize=32M   非堆

    2. -Xmx32M -Xms32M   堆

  2. //controller类
    @RestController
    public class MemoryController {
    //这个实体类随便搞就可以了,只是要达到堆内存溢出的效果
       private List<User> userList = new ArrayList<>();
       //达到栈内存溢出的效果需要创建类,所以需要有一个创建类的程序,后续带了
       private List<Class<?>> classList = new ArrayList<>();

       @GetMapping("/heap")
       public String heap(){
           int i = 0;
           while (true){
               userList.add(new User(i++, UUID.randomUUID().toString()));
           }
       }

       @GetMapping("/nonHeap")
       public String nonHeap(){
           int i = 0;
           while (true){
               classList.addAll(Metaspace.createClasses());
           }
       }
    }
    //创建类对象的类
    public class Metaspace extends ClassLoader {

       public static List<Class<?>> createClasses() {
           // 类持有
           List<Class<?>> classes = new ArrayList<Class<?>>();
           // 循环1000w次生成1000w个不同的类。
           for (int i = 0; i < 10000000; ++i) {
               ClassWriter cw = new ClassWriter(0);
               // 定义一个类名称为Class{i},它的访问域为public,父类为java.lang.Object,不实现任何接口
               cw.visit(Opcodes.V1_1, Opcodes.ACC_PUBLIC, "Class" + i, null,
                       "java/lang/Object", null);
               // 定义构造函数<init>方法
               MethodVisitor mw = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>",
                       "()V", null, null);
               // 第一个指令为加载this
               mw.visitVarInsn(Opcodes.ALOAD, 0);
               // 第二个指令为调用父类Object的构造函数
               mw.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object",
                       "<init>", "()V");
               // 第三条指令为return
               mw.visitInsn(Opcodes.RETURN);
               mw.visitMaxs(1, 1);
               mw.visitEnd();
               Metaspace test = new Metaspace();
               byte[] code = cw.toByteArray();
               // 定义类
               Class<?> exampleClass = test.defineClass("Class" + i, code, 0, code.length);
               classes.add(exampleClass);
           }
           return classes;
       }
    }


课程收获:

之前老是遇到内存溢出,其实内存溢出也是分栈内存溢出和堆内存溢出的,不过这次真的是自己动手实现了。

Exception in thread "http-nio-8080-exec-2" java.lang.OutOfMemoryError: Metaspace  栈内存溢出

Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: GC overhead limit exceeded:堆内存溢出

这个创建class的类其实没太懂,我还要再听一遍

https://img3.sycdn.imooc.com/63e0c47c00011b8d16461181.jpg


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消