기본 유형 포장 유형 더미 와 창고 의 차이

package cn.nubia;

public class Demo1
{

	/**
	 * == ,  JDK   ,                      。          , str1 str2           。
	 * from:http://baike.baidu.com/view/93201.htm?fr=aladdin
	 * 
	 * @param args
	 */
	public static void main(String[] args)
	{
		String str1 = "I love Java";
		String str2 = "I love Java";
		String str3 = "I love Java too";// String     ,          
		System.out.println(str1 == str2);//   str2 ,    str1  ,          ,       ,      ,            
		String str4;
		str4 = str2;
		System.out.println(str3 == str4);
		String str5 = new String("I love Java");//   str5     ,    :java                  ,                 ,
		//                       ,                ,                        (  )  
		//     new()      ,       ,            ,          ,           。
		System.out.println(str1 == str5);// false:      new()      ,       ,
		//             ,          ,           。
		System.out.println(new String("I lova Java") == str1);
		System.out.println(str1.equals(str5));
		//     :
		/**
		 *      java   RAM        , C++  ,java       ,             ,C++       :
		 * http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html
		 *  :         (              
		 *     ),          ,      new、newarray     ,java              ;
		 *  :       ,      ,        ,     str1 str2,     String str1 =
		 *     "I love Java";
		 *                  str1   ,         "I lova Java"   ,     ,            
		 * <span style="white-space:pre">	</span>(       ,  str1    str5,  str5     ,              ),    String
		 * <span style="white-space:pre">	</span>str2="I love java"
		 * <span style="white-space:pre">	</span>,    str2       ,        "I love java"   ,  str2    
		 * <span style="white-space:pre">	</span>"I love java",      str1 str2          ,  str1==str2   true;
		 */

		//     java   ,                !
	}

}

신청 제한
창고: 윈도 에서,
창고
낮은 주소 로 확 장 된 데이터 구 조 는 연속 적 인 메모리 영역 입 니 다.이 말 은 스 택 꼭대기 의 주소 와 스 택 의 최대 용량 은 시스템 이 미리 정 해 놓 은 것 이 고, WINDOWS 에서 스 택 의 크기 는 2M (1M 라 고도 하 는데, 한 번 컴 파일 할 때 정 해진 상수) 이 며, 신청 한 공간 이 스 택 의 남 은 공간 을 초과 할 경우 overflow 를 알려 준 다 는 뜻 이다.따라서 스 택 에서 얻 을 수 있 는 공간 이 적다.
쌓다
높 은 주소 로 확 장 된 데이터 구 조 는 불 연속 메모리 영역 입 니 다.이것 은 시스템 이 링크 로 저 장 된 남 은 메모리 주소 이기 때문에 당연히 연속 되 지 않 는 다.
링크 의 이동 방향 은 낮은 주소 에서 높 은 주소 로 간다.쌓 인 크기 는 컴퓨터 시스템 의 효과 적 인 가상 메모리 에 제한 을 받는다.이 를 통 해 알 수 있 듯 이 쌓 아 올 린 공간 이 비교적 유연 하고 크다.따라서 안 드 로 이 드 프로그램 에서 신청 한 배열 의 크기 가 제한 되 어 있 습 니 다.
Max Heap Size 는 메모리 의 상한 값 이 고 Android 의 부족 값 은 16M (일부 기종 은 24M) 입 니 다.
   예시:
import java.util.Vector;

public class Demo1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Vector<String> vs = new Vector<String>();
		while (true) {
			vs.add("a");
		}
	}

}

오류 보고:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Unknown Source)
	at java.util.Arrays.copyOf(Unknown Source)
	at java.util.Vector.ensureCapacityHelper(Unknown Source)
	at java.util.Vector.add(Unknown Source)
	at OOM  .Demo1.main(Demo1.java:13)

좋은 웹페이지 즐겨찾기