Java程序的运行原理及JVM的启动是多线程的吗?

  A:Java程序的运行原理
    Java通过java命令会启动java虚拟机。启动JVM,等于启动了一个应用程序,也就是启动了一个进程。
    该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。
  B:JVM的启动是多线程的吗?
    垃圾回收线程也要先启动,否则很容易会出现内存溢出
    JVM的启动是多线程的,因为它最低有两个线程启动了,主线程垃圾回收线程

示例代码如下:

 1 package cn.itcast_01;
 2 /*
 3  *    进程:
 4  *        正在运行的程序,是系统进行资源分配和调用的独立单位。
 5  *        每一个进程都有它自己的内存空间和系统资源。
 6  *    线程:
 7  *        是进程中的单个顺序控制流,是一条执行路径。
 8  *        是程序的执行单元,执行路径。是程序使用CPU的最基本单位。
 9  *
10  *        一个进程如果只有一条执行路径,则称为单线程程序。
11  *        一个进程如果有多条执行路径,则称为多线程程序。
12  *
13  *  举例:
14  *      扫雷程序,迅雷下载
15  *
16  *  大家注意两个词汇的区别:并行和并发。
17  *        并行:前者是逻辑上同时发生,指在某一个时间内同时运行多个程序。
18  *        并发:后者是物理上同时发生,指在某一个时间点同时运行多个程序。
19  *
20  *        在java就业班中会有如何解决高并发?
21  *
22  * Java程序的运行原理:
23  *        通过java命令会启动 java虚拟机。启动 JVM,等于启动了一个应用程序,也就是启动了一个进程。
24  *        该进程会自动启动一个 “主线程”,然后主线程去调用某个类的 main方法。所以 main方法运行在主线程中。在此之前的所有程序都是单线程的。
25  *
26  * 思考题:
27  *         jvm虚拟机的启动是单线程的还是多线程的?
28  *             多线程的。
29  *             原因是垃圾回收线程也要先启动,否则很容易会出现内存溢出。
30  *             现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,jvm的启动其实是多线程的。
31  */
32 public class MyThreadDemo {
33     public static void main(String[] args) {
34         System.out.println("hello");
35         new Object(); // 造对象
36         new Object(); // 造对象
37         new Object(); // 造对象
38         new Object(); // 造对象
39         //...造很多很多对象后,如果垃圾回收线程不启动的话,内存就会溢出!
40         System.out.println("world");
41     }
42 }

我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

Java程序的运行原理及JVM的启动是多线程的吗?相关推荐

  1. 1.3.2 java程序的运行机制和jvm

    为什么80%的码农都做不了架构师?>>>    java语言比较特殊,由java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节 ...

  2. Java程序的运行机制和JVM

    Java语言比较特殊,由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(*.class文件).当然,这种字节码不是可执行的,必须使用J ...

  3. Java程序的运行原理 用记事本编写Java代码

    首先将Java代码写入源文件(.java)中→ 通过 javac 生成class文件(.class) → 再通过java命令执行程序:◆将class文件加载内存(相当于将东西输入大脑)◆检验class ...

  4. 23.多线程(进程的概述和多进程的意义,线程的概述和多线程的意义,JVM运行原理以及JVM启动的线程探讨,实现多线程 线程调度,线程控制,Lock锁,死锁现象)

    1.进程概述及多进程的意义 1.线程和进程     要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的. 2.进程概述     什么是进程呢?通过任务管理器我们就可以看到进程的存在.      ...

  5. 解释java程序所使用的命令是,Java程序的执行原理以及解释说明

    在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了.推荐在Windows操作系统中使用EditPlus工具进行编写.由于我使用的是Mac OS,所以,我使用Su ...

  6. java原理教程,java基础之运行原理(一),java基础运行原理

    java基础之运行原理(一),java基础运行原理 java的核心配置:JDK JDK主要包括三个部分 1.Jre:java的运行环境 2.Java的工具:java的编译器(java.c.exe). ...

  7. Java 程序的工作原理

    文章目录 Java 语言的主要特点 Java 体系 从源码到机器码的过程 JDK.JRE 与 JVM 是什么 字节码解释过程 Java两大核心机制之JVM Java两大核心机制之GC Java 语言的 ...

  8. 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优

    一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JCons ...

  9. python程序只能使用源代码进行运行吗-谈谈 Python 程序的运行原理

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...

最新文章

  1. 三十之惑–面霸的八月(第二部分)
  2. 快速排序算法(基于Java实现)
  3. win7环境变量设置
  4. FD.io/VPP — ACL
  5. android 多个标签页,Android一个标签页的实现
  6. C# Socket系列一 简单的创建socket的监听
  7. SAP Spartacus里Product Carousel componentData取数据的逻辑研究
  8. mybatis配置insert/update/delete同一个模板
  9. 计算机专业后悔么,王言匀
  10. 胡润百富:华为成为中国最值钱消费电子企业 小米排名第二
  11. 拳王虚拟项目公社:说一个合法正规兼职创业,副业虚拟资源项目
  12. 四个数学软件主要特点
  13. python如何写简历_用Python写简历
  14. 【RDMA】技术详解(四):RDMA之Verbs和编程步骤
  15. 消费无人机难有新突破,行业无人机成极飞科技唯一突破口?
  16. (附源码)springboot校园兼职系统 毕业设计 031122
  17. mysql生成uui mybatis_Mybatis【配置文件】详解
  18. 简单三步解除Word文档保护密码(转)
  19. gt710显卡驱动linux,华硕 GT710-SL-2G驱动下载_asus GT710-SL-2G显卡驱动下载-硬件之家...
  20. 【vue系列-04】vue的表单数据收集,基本指令和自定义指令

热门文章

  1. 用树状数组解决求区间最值的问题:hdu1754
  2. [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档
  3. SQLServer中使用Split功能分割字符串
  4. Cadvisor源码分析监控项
  5. [django]模板中自定义变量django模板中的变量
  6. [AHOI2005]约数研究
  7. 团队-石头剪刀布-模块测试过程
  8. UML类图与类的关系
  9. 无限轮播的N+2 策略
  10. 你的应用是如何被替换的,App劫持病毒剖析