日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

html简单网页代码 案例_制作网页代码案例(w3cschool)

發布時間:2023/12/19 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 html简单网页代码 案例_制作网页代码案例(w3cschool) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是冰河~~

作為程序員,多多少少都會遇到一些內存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個假程序員!哈哈,開個玩笑。

當初面試官讓我現場手寫內存溢出案例代碼,我就以Java代碼的方式列舉了幾個典型的內存溢出案例。今天分享給大家,希望大家在日常工作中,盡量避免寫這些low水平的代碼。

小伙伴們點贊,收藏,評論,走起呀

我們先來看看今天要介紹哪些內存溢出案例,冰河這里總結了一張圖,如下所示。

說干就干,咱們開始吧??!

定義主類結構

首先,我們創建一個名稱為BlowUpJVM的類,之后所有的案例實驗都是基于這個類進行。如下所示。

public class BlowUpJVM { 
     
} 

棧深度溢出

public static void  testStackOverFlow(){ 
    
      BlowUpJVM.testStackOverFlow(); 
} 

棧不斷遞歸,而且沒有處理,所以虛擬機棧就不斷深入不斷深入,棧深度就這樣溢出了。

永久代內存溢出

public static void testPergemOutOfMemory1(){ 
    
   //方法一失敗 
   List<String> list = new ArrayList<String>(); 
   while(true){ 
    
      list.add(UUID.randomUUID().toString().intern()); 
   } 
} 

打算把String常量池堆滿,沒想到失敗了,JDK1.7后常量池放到了堆里,也能進行垃圾回收了。

然后換種方式,使用cglib,用Class把老年代取堆滿

public static void testPergemOutOfMemory2(){ 
    
   try { 
    
      while (true) { 
    
         Enhancer enhancer = new Enhancer(); 
         enhancer.setSuperclass(OOM.class); 
         enhancer.setUseCache(false); 
         enhancer.setCallback(new MethodInterceptor() { 
    
            @Override 
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { 
    
               return proxy.invokeSuper(obj, args); 
            } 
         }); 
         enhancer.create(); 
      } 
   } 
   catch (Exception e){ 
    
      e.printStackTrace(); 
   } 
} 

虛擬機成功內存溢出了,那JDK動態代理產生的類能不能溢出呢?

public static void testPergemOutOfMemory3(){ 
    
   while(true){ 
    
   final OOM oom = new OOM(); 
   Proxy.newProxyInstance(oom.getClass().getClassLoader(), oom.getClass().getInterfaces(), new InvocationHandler() { 
    
         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
    
            Object result = method.invoke(oom, args); 
            return result; 
         } 
      }); 
   } 
} 

事實表明,JDK動態代理差生的類不會造成內存溢出,原因是:JDK動態代理產生的類信息,不會放到永久代中,而是放在堆中。

本地方法棧溢出

public static void testNativeMethodOutOfMemory(){ 
    
   int j = 0; 
   while(true){ 
    
      Printer.println(j++); 
      ExecutorService executors = Executors.newFixedThreadPool(50); 
      int i=0; 
      while(i++<10){ 
    
         executors.submit(new Runnable() { 
    
            public void run() { 
    
            } 
         }); 
      } 
   } 
} 

這個的原理就是不斷創建線程池,而每個線程池都創建10個線程,這些線程池都是在本地方法區的,久而久之,本地方法區就溢出了。

JVM棧內存溢出

public static void testStackOutOfMemory(){ 
    
    while (true) { 
      
            Thread thread = new Thread(new Runnable() { 
      
                   public void run() { 
    
                          while(true){ 
    
                      } 
                   }   
            });   
            thread.start();   
     }   
} 

線程的創建會直接在JVM棧中創建,但是本例子中,沒看到內存溢出,主機先掛了,不是JVM掛了,真的是主機掛了,無論在mac還是在windows,都掛了。

溫馨提示,這個真的會死機的。

堆溢出

public static void testOutOfHeapMemory(){ 
    
   List<StringBuffer> list = new ArrayList<StringBuffer>(); 
   while(true){ 
    
      StringBuffer B = new StringBuffer(); 
      for(int i = 0 ; i < 10000 ; i++){ 
    
         B.append(i); 
      } 
      list.add(B); 
   } 
} 

不斷往堆中塞新增的StringBuffer對象,堆滿了就直接溢出了。

測試案例完整代碼

public class BlowUpJVM { 

//棧深度溢出
public static void  testStackOverFlow(){ 
 
BlowUpJVM.testStackOverFlow(); 
} 
//不能引起永久代溢出
public static void testPergemOutOfMemory1(){ 
 
//方法一失敗 
List<String> list = new ArrayList<String>(); 
while(true){ 
 
list.add(UUID.randomUUID().toString().intern()); 
} 
} 
//永久代溢出
public static void testPergemOutOfMemory2(){ 
 
try { 
 
while (true) { 
 
Enhancer enhancer = new Enhancer(); 
enhancer.setSuperclass(OOM.class); 
enhancer.setUseCache(false); 
enhancer.setCallback(new MethodInterceptor() { 
 
@Override 
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { 
 
return proxy.invokeSuper(obj, args); 
} 
}); 
enhancer.create(); 
} 
} 
catch (Exception e){ 
 
e.printStackTrace(); 
} 
} 
//不會引起永久代溢出
public static void testPergemOutOfMemory3(){ 
 
while(true){ 
 
final OOM oom = new OOM(); 
Proxy.newProxyInstance(oom.getClass().getClassLoader(), oom.getClass().getInterfaces(), new InvocationHandler() { 
 
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
 
Object result = method.invoke(oom, args); 
return result; 
} 
}); 
} 
} 
//本地方法棧溢出
public static void testNativeMethodOutOfMemory(){ 
 
int j = 0; 
while(true){ 
 
Printer.println(j++); 
ExecutorService executors = Executors.newFixedThreadPool(50); 
int i=0; 
while(i++<10){ 
 
executors.submit(new Runnable() { 
 
public void run() { 
 
} 
}); 
} 
} 
} 
//JVM內存溢出
public static void testStackOutOfMemory(){ 
 
while (true) { 
   
Thread thread = new Thread(new Runnable() { 
   
public void run() { 
 
while(true){ 
 
} 
}   
});   
thread.start();   
}   
} 
//堆溢出
public static void testOutOfHeapMemory(){ 
 
List<StringBuffer> list = new ArrayList<StringBuffer>(); 
while(true){ 
 
StringBuffer B = new StringBuffer(); 
for(int i = 0 ; i < 10000 ; i++){ 
 
B.append(i); 
} 
list.add(B); 
} 
} 
} 

寫在最后

如果你想進大廠,想升職加薪,或者對自己現有的工作比較迷茫,都可以私信我交流,希望我的一些經歷能夠幫助到大家~~

推薦閱讀:

  • 《奉勸那些剛參加工作的學弟學妹們:要想進大廠,這些核心技能是你必須要掌握的!完整學習路線!?。ńㄗh收藏)》
  • 《奉勸那些剛參加工作的學弟學妹們:這些計算機與操作系統基礎知識越早知道越好!萬字長文太頂了?。。ńㄗh收藏)》
  • 《我用三天時間開發了一款老少皆宜的國民級游戲,支持播放音樂,現開放完整源代碼和注釋(建議收藏)!!》
  • 《我是全網最硬核的高并發編程作者,CSDN最值得關注的博主,大家同意嗎?(建議收藏)》
  • 《畢業五年,從月薪3000到年薪百萬,我掌握了哪些核心技能?(建議收藏)》
  • 《我入侵了隔壁妹子的Wifi,發現。。。(全程實戰干貨,建議收藏)》
  • 《千萬不要輕易嘗試“熊貓燒香”,這不,我后悔了!》
  • 《清明節偷偷訓練“熊貓燒香”,結果我的電腦為熊貓“獻身了”!》
  • 《7.3萬字肝爆Java8新特性,我不信你能看完?。ńㄗh收藏)》
  • 《在業務高峰期拔掉服務器電源是一種怎樣的體驗?》
  • 《半小時實現Java手擼Http協議,爽?。。ǜ酵暾创a,建議收藏)》
  • 《畢業五年,年薪百萬,只因我做對了這些事!?。ńㄗh收藏)》

最后,附上并發編程需要掌握的核心技能知識圖,祝大家在學習并發編程時,少走彎路。

好了,今天就到這兒吧,小伙伴們點贊、收藏、評論,一鍵三連走起呀,我是冰河,我們下期見~~

總結

以上是生活随笔為你收集整理的html简单网页代码 案例_制作网页代码案例(w3cschool)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。