Java程序的运行原理及JVM的启动是多线程的吗?
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.3.2 java程序的运行机制和jvm
为什么80%的码农都做不了架构师?>>> java语言比较特殊,由java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节 ...
- Java程序的运行机制和JVM
Java语言比较特殊,由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(*.class文件).当然,这种字节码不是可执行的,必须使用J ...
- Java程序的运行原理 用记事本编写Java代码
首先将Java代码写入源文件(.java)中→ 通过 javac 生成class文件(.class) → 再通过java命令执行程序:◆将class文件加载内存(相当于将东西输入大脑)◆检验class ...
- 23.多线程(进程的概述和多进程的意义,线程的概述和多线程的意义,JVM运行原理以及JVM启动的线程探讨,实现多线程 线程调度,线程控制,Lock锁,死锁现象)
1.进程概述及多进程的意义 1.线程和进程 要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的. 2.进程概述 什么是进程呢?通过任务管理器我们就可以看到进程的存在. ...
- 解释java程序所使用的命令是,Java程序的执行原理以及解释说明
在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了.推荐在Windows操作系统中使用EditPlus工具进行编写.由于我使用的是Mac OS,所以,我使用Su ...
- java原理教程,java基础之运行原理(一),java基础运行原理
java基础之运行原理(一),java基础运行原理 java的核心配置:JDK JDK主要包括三个部分 1.Jre:java的运行环境 2.Java的工具:java的编译器(java.c.exe). ...
- Java 程序的工作原理
文章目录 Java 语言的主要特点 Java 体系 从源码到机器码的过程 JDK.JRE 与 JVM 是什么 字节码解释过程 Java两大核心机制之JVM Java两大核心机制之GC Java 语言的 ...
- 如何分析java程序_如何利用 JConsole观察分析Java程序的运行,进行排错调优
一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JCons ...
- python程序只能使用源代码进行运行吗-谈谈 Python 程序的运行原理
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...
最新文章
- 三十之惑–面霸的八月(第二部分)
- 快速排序算法(基于Java实现)
- win7环境变量设置
- FD.io/VPP — ACL
- android 多个标签页,Android一个标签页的实现
- C# Socket系列一 简单的创建socket的监听
- SAP Spartacus里Product Carousel componentData取数据的逻辑研究
- mybatis配置insert/update/delete同一个模板
- 计算机专业后悔么,王言匀
- 胡润百富:华为成为中国最值钱消费电子企业 小米排名第二
- 拳王虚拟项目公社:说一个合法正规兼职创业,副业虚拟资源项目
- 四个数学软件主要特点
- python如何写简历_用Python写简历
- 【RDMA】技术详解(四):RDMA之Verbs和编程步骤
- 消费无人机难有新突破,行业无人机成极飞科技唯一突破口?
- (附源码)springboot校园兼职系统 毕业设计 031122
- mysql生成uui mybatis_Mybatis【配置文件】详解
- 简单三步解除Word文档保护密码(转)
- gt710显卡驱动linux,华硕 GT710-SL-2G驱动下载_asus GT710-SL-2G显卡驱动下载-硬件之家...
- 【vue系列-04】vue的表单数据收集,基本指令和自定义指令