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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏友弟技术工作室

Requests库详解

requests(爬虫系列之一) 由于最近工作中,与同事对接模拟手机浏览器进行广告模拟跳转。又一次接触用到爬虫的知识,以前用过urllib + bs4 + se...

39290
来自专栏小二的折腾日记

Linux的fork使用

功能:fork函数是从一个已经存在的进程中创建一个新的进程,新的进程称为子进程,原来的进程称为父进程。 参数:无 返回值: 成功:子进程中返回 0,父进程中返回...

21930
来自专栏炸天帮5

win32进程概念之句柄表,以及内核对象.

我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

9410
来自专栏python3

python3--队列Queue,管道Pipe,进程之间的数据共享,进程池Pool,回调函数callback

既打印了主进程put的值,也打印了子进程put的值,在进程中使用队列可以完成双向通信

57710
来自专栏指尖下的Android

Android4.4运行过程中闪退java.lang.NoClassDefFoundError

上周五项目测试时发现一个奇怪的Bug,项目中依赖了一个第三方框架,但是在android4.0-4.4.4之间的系统中运行会直接闪退,抛出错误异常为java.la...

13320
来自专栏北京马哥教育

面试分享系列 | 17道Python面试题,让你在求职中无往不利

今天给大家分享的是Python面试题系列的第一篇文章,后续我也会陆续整理Python相关的问题给大家,无论是求职者还是新人都可以通过面试题来考察自己的能力缺陷。...

37340
来自专栏依乐祝

.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的...

9600
来自专栏Python爬虫与算法进阶

Python函数超时,用装饰器解决

我们在自定义一个函数后,会调用这个函数来完成我们想要的功能。 就拿爬虫来举例,你发送请求,服务器给你响应,但是有可能服务器没有给你任何数据,无论是他识别了爬虫、...

35220
来自专栏pangguoming

Redis快速入门

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。 Redis从它的许多竞争继承来的三个主要特点: ...

34350
来自专栏北京马哥教育

python线程笔记

豌豆贴心提醒,本文阅读时间5分钟 来源:伯乐在线 原文:http://python.jobbole.com/87498/ 引言&动机 考虑一下...

36950

扫码关注云+社区

领取腾讯云代金券