概念: 进程:在操作系统中可以并发执行的一个任务,采用分时间片(微观串行,宏观并行),由操作系统调度 线程: 是进程中并发执行的一个顺序流程 线程组成: CPU时间片,由操作系统调度 内存(JVM内存):堆空间(保存对象,即实例变量,线程共享)、栈空间(保存局部变量:线程独立) 代码:是由程序员决定 ...
分类:
编程语言 时间:
2019-12-27 13:12:04
阅读次数:
88
首先,给出“进程、线程和协程”的特点: 进程:拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度; 线程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操作系统调度; 协程:拥有自己独立的栈和共享的堆,共享堆,不共享栈,协程由程序员在协程的代码里显示调度 ...
分类:
编程语言 时间:
2019-07-15 20:05:43
阅读次数:
121
1、面向对象内存分析 栈的特点 栈的特点 (1)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等) (2)栈属于线程私有,不能实现线程间的共享! (3)栈的存储特性是:先进后出,后进先出。由系统自动分配,速度快!是一个连续的内存空间。 (4)栈描述的是方法执行的内存模型 ...
分类:
编程语言 时间:
2019-04-07 12:53:46
阅读次数:
158
1.JVM包含哪些部分 方法区:属于线程共享,所有字段和方法字节码,以及构造函数,接口定义都在方法区, 总的来说所有定义的方法都在方法区静态变量,常量,类信息,运行时常量池。线程共享 堆:实例变量,实例对象。线程共享 栈:主管java运行,是在线程创建时创建,生命周期伴随线程的消亡而消亡。 本地变量 ...
分类:
其他好文 时间:
2019-02-24 13:45:20
阅读次数:
172
在Linux操作系统层面,线程其实只是特殊的进程,最特殊之处在于跟其他“线程进程“共享内存(包括代码段、数据段等,但不共享栈)。 这两天看书老是看到线程组(thread group),但是线程组是什么呢?百思不得其解,幸好有StackOverflow,不多说,先上链接:《If threads sha ...
分类:
系统相关 时间:
2018-11-30 14:07:04
阅读次数:
282
所谓的共享栈就是两个虚拟的栈使用一块固定大小的数组元素,涉及到如何不冲突的进行入栈出栈操作。对一维数组即在数组两头设置两个栈顶标记(指针)。然后分别这两个进行入栈出栈操作。当前面的栈标记位置+1=后面栈的位置,那么不可以进行入栈操作,如果两个栈有在栈底(对前面的来说是top1== 1,后一个是top ...
分类:
编程语言 时间:
2018-10-31 18:28:22
阅读次数:
141
栈的特点如下: 1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等) 2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等) 3. 栈属于线程私有,不能实现线程间的共享! 4. 栈的存储特性是“先进后出,后进先出” 5 ...
分类:
其他好文 时间:
2018-10-07 12:56:49
阅读次数:
187
--题目--(1) 列举python网络爬虫所引用的模块包,提取数据用到的模块(至少各2个) requests、urllib | jsonpath xpath beautifulsoup (2)浏览器请求某网站时,从输入到页面显示出来,描述一下请求过程 1.敲域名回车 2.查询本地的DNS缓存,以找 ...
分类:
其他好文 时间:
2018-07-09 21:30:22
阅读次数:
224
堆与栈分开设计是为什么呢? 栈存储了处理逻辑、堆存储了具体的数据,这样隔离设计更为清晰 堆与栈分离,使得堆可以被多个栈共享。 栈保存了上下文的信息,因此只能向上增长;而堆是动态分配 栈的大小可以通过-XSs设置,如果不足的话,会引起java.lang.StackOverflowError的异常 ...
分类:
其他好文 时间:
2018-04-10 16:04:33
阅读次数:
181
JVM内存管理机制和垃圾回收机制 JVM结构 图片描述: 1. java源码编译成class文件 1. class文件通过类加载器加载到内存 1. 其中方法区存放的是运行时的常量、静态变量、类信息等,被所有线程共享 1. 堆空间存放对象,被所有线程共享 1. 栈空间存放的是栈帧,包括局部变量、操作数 ...
分类:
其他好文 时间:
2018-02-24 13:03:10
阅读次数:
151