JDK、JRE、JVM的关系

jdk    JAVA Development  Kit    java开发工具集
JRE   Java Runtime Environment  Java运行环境
Jvm   Java Virtual Machine        Java虚拟机
jdk = java语言+Tools +Tool APIs
Jre = Jvm + Java SE API + Deployment  (Java7版本Jvm在java se Api中)
Java SE API = Compact Profiles + User Interface Toolkits
User Interface Toolkits = lang and util Base Libraries + Other Base Libraries + Integration Libraries

Java API  java类库

测试堆内存溢出代码:

1 public class Demo {
2
3 }
 1 import java.util.ArrayList;
 2 import java.util.List;
 3
 4 public class Test {
 5     public static void main(String[] args) {
 6         List<Demo> demoList = new ArrayList();
 7         while(true) {
 8             demoList.add(new Demo());
 9         }
10     }
11 }

错误:

1 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
2     at java.util.Arrays.copyOf(Arrays.java:3210)
3     at java.util.Arrays.copyOf(Arrays.java:3181)
4     at java.util.ArrayList.grow(ArrayList.java:261)
5     at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
6     at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
7     at java.util.ArrayList.add(ArrayList.java:458)
8     at jvm.Test.main(Test.java:10)

给jvm传入参数  -XX:+HeapDumpOnOutOfMemoryError -Xms20m -Xmx20m   导出堆快照信息

错误:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid19356.hprof ...
Heap dump file created [27964857 bytes in 0.107 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:261)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
    at java.util.ArrayList.add(ArrayList.java:458)
    at jvm.Test.main(Test.java:10)

使用MemoryAnalyzer 工具分析堆内存情况

原文地址:https://www.cnblogs.com/haoyujun135/p/12082797.html

时间: 2024-10-29 21:34:00

JDK、JRE、JVM的关系的相关文章

4/2/2017 Sun.(Week1,01Day) dos命令,jdk&amp;jre&amp;jvm的关系,classpath和path区别

一.学习方法 1.独立思考 2.独立整理.总结知识点 3.整理Exception报错文档 4.莫钻牛角尖 5.敲代码,敲,猛敲,死里敲 一句话:"代码虐我千百遍,我视代码如初恋!!!" 二.常用dos命令 1.start:重新打开一个dos命令窗口 2.exit:退出dos命令窗口 3.cd:显示或进入指定目录 4.cls:清屏   5.dir:遍历并罗列当前目录下的文件和文件夹 6.help:罗列所有的dos命令 (注:①↑或↓:切换历史命令 ②. :当前目录 ③.. :上层目录 ④

jre,jdk,jvm的关系

今天在用maven搭建项目工程的时候出错的原因竟然是因为使用了jre,而非jdk导致报错,这里就搜集了有关这方面的信息: JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE.Java工具和Java基础类库.(一般开发人员用jdk) Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库.(一般的用户不开发程序用jre即可) JVM是Java

JDK,JRE,JVM的区别与联系

很多朋友跟我一样,已经使用Java开发很久了,可是对JDK,JRE,JVM这三者的区别与联系一直都是模模糊糊的,下面我们来总结一下. JDK Java Development ToolKit(Java开发工具包).JDK是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具(javac/java/jdb)和Java基础类库(即Java API包括rt.jar).最流行的JDK是sun公司发布的JDK,除了sun之外,还有好多公司和组织都

JDK,JRE,JVM区别与联系

JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar). JDK有以下三种版本: J2SE,standard edition,标准版,是我们通常用的一个版本 J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序 J2ME,

JDK,JRE,JVM的区别

在lua,cocos-2d的开发中,需要用到java的东东,这些东东之间的联系往往不是很清楚明了,于是整理了下... 下图很好的表面了JDK,JRE,JVM三者间的关系: JDK Java Development Kit(JDK) 是 Java 语言的软件开发工具包(SDK).作为Java语言的SDK,普通用户并不需要安装JDK来运行Java程序,而只需要安装JRE(Java Runtime Environment).而程序开发者必须安装JDK来编译.调试程序. SE(J2SE),standar

JDK,JRE,JVM区别与联系(转)

JDK : JavaDevelopment ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即JavaAPI 包括rt.jar).最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK都是为

JDK,JRE,JVM区别与联系(ZZ)

http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用. JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环

JVM学习笔记(一)JDK&amp;JRE&amp;JVM

JDK : Java Development ToolKit(Java开发工具包),包括了Java运行环境JRE(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar).JDK中包括JRE主要是因为JDK中自带的工具及例子,需要JRE支持才能运行. JRE:Java Runtime Enviromental(java运行时环境).也就是我们说的JAVA平台,所有的Java程序都要在JRE下才

JDK,JRE,JVM区别与联系-理解与概括

我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用. JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础

JDK JRE JVM 区别

JDK : Java Development ToolKit(Java开发工具包).JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar). 最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,例如国外IBM公司开发了属于自己的JDK,国内淘宝也开发了属于自己的JDK,各个组织开发自己的JDK