1. 程式人生 > >(一)深入java虛擬機之內存溢出與分析

(一)深入java虛擬機之內存溢出與分析

nal 一段時間 http run argument sta 配置 ali static

一、內存溢出程序

public class Test {
    public static void main(String[] args) {
        List<User> userList=new ArrayList<User>();
        while(true) {
            userList.add(new User());
        }
    }
}
public class User implements Serializable {

    /**
     * 
     */
    private static
final long serialVersionUID = 1L; private Integer id; private String userName; private String pwd; //省略getset方法
  • 當程序運行起來後一段時間內存就會溢出。

二、查看內存溢出情況

  2.1  安裝內存分析工具

技術分享圖片

  2.2  運行參數配置

Run as-->Run Configurations-->Arguments-->VM arguments:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,配置20M當做內存溢出上限,方便測試,具體大小大家可以自己控制。-XX:+HeapDumpOnOutOfMemoryError 配置後,當存溢出就會生成文件。

技術分享圖片

  2.3  運行程序

技術分享圖片

  • 刷新工程,生成文件

技術分享圖片

  • 雙擊打開

技術分享圖片

技術分享圖片

如上圖可知,是main線程的ArrayList內存溢出

(一)深入java虛擬機之內存溢出與分析