Exception in thread "main" java.lang.OutOfMemoryError: Java heap space5、方法區(qū),是所有JVM共享的區(qū)域,存儲了跟類的結(jié)構(gòu)相關(guān)的信息:運行時常量池,類的成員變量,方法數(shù)據(jù),以及成員方法和構(gòu)造器方法的代碼等 。方法區(qū)是在JVM啟動時被創(chuàng)建的,可以通過-XX:MaxMetaspaceSize=10m設(shè)置方法區(qū)的大小 。下圖就是JDK1.8中的內(nèi)存結(jié)構(gòu):
可以看到,Metaspace作為方法區(qū)的實現(xiàn),包含了Class、ClassLoader和常量池 。方法區(qū)也會有內(nèi)存溢出,即元空間的內(nèi)存溢出:
public class Demo1_5 extends ClassLoader{public static void main(String args[]) {try {Demo1_5 test = new Demo1_5();//加載10000個新的類for (int i=0; i<10000; i++) {//生成類的二進制字節(jié)碼ClassWriter cw = new ClassWriter(0);//參數(shù)含義:版本號,public,類名,包名,父類,接口cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "Class"+i, null, "java/lang/object", null);//返回類的byte數(shù)組byte[] code = cw.toByteArray();//執(zhí)行類的加載test.defineClass("Class"+i, code, 0, code.length);}}catch (Exception e) {e.printStackTrace();}}}上述案例演示了加載的類數(shù)量過多導(dǎo)致元空間內(nèi)存溢出,以下是運行后結(jié)果:
Error occurred during initialization of VMMaxMetaspaceSize is too small.
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 別人的Word頁碼是花了一小時做好的 頁碼怎么設(shè)置
- 基坑周邊多少范圍內(nèi)嚴(yán)禁堆放材料
- 簡單三步教你win10防火墻端口設(shè)置 win10開放端口命令
- 蘋果筆記本一鍵還原 mac還原系統(tǒng)設(shè)置
- 設(shè)置二級域名的方法 二級域名格式怎么注冊
- 蘋果6小圓點怎么設(shè)置出來 蘋果6小圓點怎么設(shè)置透明
- 抖音背景圖尺寸 抖音背景圖尺寸怎么設(shè)置
- 講解cad設(shè)置繪圖區(qū)域 cad格式在哪里設(shè)置
- 設(shè)置起始頁碼為III怎么設(shè)置 設(shè)置頁碼從第三頁開始設(shè)置頁碼
- 騰訊視頻投屏默認(rèn)怎么修改 騰訊視頻怎么設(shè)置投屏
