JVM的线程】的更多相关文章

前言 所有的 Java 程序都会被翻译为包含字节码的 class 文件,字节码是 JVM 的机器语言.这篇文章将阐述 JVM 是如何处理线程同步以及相关的字节码. 线程和共享数据 Java 的一个优点就是在语言层面支持多线程,这种支持集中在协调多线程对数据的访问上. JVM 将运行时数据划分为几个区域:一个或多个栈,一个堆,一个方法区. 在 JVM 中,每个线程拥有一个栈,其他线程无法访问,里面的数据包括:局部变量,函数参数,线程调用的方法的返回值.栈里面的数据只包含原生数据类型和对象引用.在…
1.jvm 每创建一个线程都会对应产生一个该线程的虚拟机栈,栈大小通过-Xss参数来设置,JDK1.5之后默认为1M 2.JVM创建线程需要内存,但这部分内存不使用堆内存(毕竟JVM虚拟机栈).对于32位虚拟机,他可以使用的最大内存为4GB,创建虚拟机栈的空间需要从 这4GB减去堆的空间,因此堆越大,能创建的线程数会减少.(虽然堆中会保存一个Thread对象,但是这对象也没多大吧,呵呵). 3.另一方面,jvm创建线程,并不仅仅是创建虚拟机栈这一个开销.jvm创建一个线程可能会对应一个操作系统线…
JVM中线程的状态转换图 线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权.即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得. 3.运行状态(Running):就绪状态的线程获取了CPU,执行程序代码. 4.阻塞状态(Blocked):阻塞状态是线程因为某种原因…
一.proc查看进程和线程 该方法是个人最为推荐,也最喜欢的一种方法.进程文件下,有几种方式可以获取目前进程开启的进程数. 查看status文件: # cat /proc//status Name: mysqld State: S (sleeping) Tgid: Pid: PPid: ……………………省略 Threads: ……………………省略 上面的threads 就是mysqld进程(这里pid是5877)开启的线程数,为107个. 查看sched文件: # cat /proc//sche…
Java基础图解,JVM,线程,Spring,TCP,SpringMVC等开发体系图解 1.Java虚拟机运行时数据区图 2. 堆的默认分配图 3.方法区结构图 4.对象的内存布局图 5.对象头的Mark Word图 6.对象与Monitor关联结构图 7.Java Monitor的工作机理图: 8.创建一个对象内存分配流程图 9.可达性分析算法判定对象存活 10.标记-清除算法示意图 11.标记-复制算法示意图 12.标记-整理算法示意图 13.垃圾收集器组合图 14.类的生命周期图 15.类…
本文来源于铁木箱子的博客http://www.mzone.cc 这几天因为自己开发的一个网站在768M内存的机器上撑不起100多个用户的运行,因为每个用户启用功能后,系统将为每个用户分配8个左右的独立线程,我的这篇文章http://www.mzone.cc/article/311.html也有介绍的.在内存小的机器上经常出现的问题就是Cann’t allocate memory和OutOfMemoryError错误,这个要从jvm的内存结构来进行分析了.在jvm内存调整过程中,我们经常使用的参数…
0.1)本文部分文字转自“深入理解jvm”, 旨在学习 线程安全与锁优化 的基础知识: 0.2)本文知识对于理解 java并发编程非常有用,个人觉得,所以我总结的很详细: [1]概述 [2]线程安全 1)线程安全定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的:(干货——线程安全定义) [2.1]java 语言中的线程安全(干货——java…
 线程安全 Java内存模型中,程序(进程)拥有一块内存空间,可以被所有的线程共享,即MainMemory(主内存):而每个线程又有一块独立的内存空间,即WorkingMemory(工作内存).普通情况下,当线程需要对某一共享变量进行修改时,通常会进行如下的过程: 1.      从主内存中拷贝变量的一份副本,并装载到工作内存中: 2.      在工作内存中执行代码,修改副本的值: 3.      用工作内存中的副本值更新主存中的相关变量值. 如下图: 所谓"线程安全",即多个线程同…
摘自:http://sesame.iteye.com/blog/622670 工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题.分析问题.解决问题. 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题:运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4,测试程序: Java代码 import java.util.concurrent.Coun…
一.线程的实现 学过操作系统的肯定都知道: 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位. 线程:是进程的一个执行单元,是进程内可调度实体.比进程更小的独立运行的基本单位.线程也被称为轻量级进程. 线程是比进程更轻量级的调度执行单元,线程的引入,可以把一个进程的资源分配和执行调度分开.各个线程既可以共享进程资源,又可以独立调度(线程是CPU调度的基本单元) 线程的实现有3中方式: 使用内核线程实现 由于内核线程的支持,每个轻量级进程都成…