线程和进程的区别有哪些?如何设计一个高并发系统

  • 商洛在线
  • 2022-08-30 23:28:46
  • 来源:中商网

1、功能不同

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2、工作原理不同

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

3、作用不同

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

常用的参数有:

-Xms

初始大小内存,默认为物理内存1/64,等价于-XX:InitialHeapSize

-Xmx

最大分配内存,默认物理内存1/4,等价于-XX:MaxHeapSize

-Xss

设置单个线程栈的大小,默认542K~1024K ,等价于-XX:ThreadStackSize

-Xmn

设置年轻代的大小

-XX:MetaspaceSize

设置元空间大小

元空间的本质和永久代类似,都是对JVM规范中方法区的实现,不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是在本地内存中。 因此,默认元空间的大小仅受本地内存限制

-XX:+PrintGCDetails

输出详细GC收集日志信息

[名称:GC前内存占用-\u003eGC后内存占用(该区内存总大小)

-XX:SurvivorRatio

设置新生代中Eden和S0/S1空间的比例

默认-XX:SurvivorRatio=8,Eden:S0:S1=8:1:1

-XX:NewRatio

设置年轻代与老年代在堆结构的占比

默认-XX:NewRatio=2 新生代在1,老年代2,年轻代占整个堆的1/3

NewRatio值若为k,则老年代占比:新生代占比 = k : 1

-XX:MaxTenuringThreshold

设置垃圾的最大年龄

默认-XX:MaxTenuringThreshold=15

如果设置为0,年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大的值,则年轻代对象回在Survivor区进行多次复制,这样可以增加对对象在年轻代的存活时间,增加在年轻代即被回收的概率。

-XX:+UseSerialGC

串行垃圾回收器

-XX:+UseParallelGC

标签: 线程和进程的区别 如何设计一个高并发系统 线程的概念和特征 常用的jvm调优参数



推荐More