JVM
冰镇-西瓜
目标赋予我们生命的意义和目的。有了目标,我们才会把注意力集中在追求喜悦,而不是在避免痛苦上。
展开
-
JVM_类加载
加载:查找并加载类的二进制数据连接:--验证:确保被加载的类的正确性 --准备:为类的静态变量分配内存,并将其初始化为默认值。 --解析:把类中的符号引用转换为直接引用初始化:为类的静态变量赋予正确的初始化。 Java程序对类的使用分为:主动使用、被动使用。主动使用(六种): 创建类的实例。访问某个类或接口的静态变量,或者对该静态变量赋值。调用类的静态方原创 2017-08-23 10:30:10 · 182 阅读 · 0 评论 -
进程与线程的区别与联系
一、进程进程:指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。 注意,进程一般有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】;进程只能由父进程建立,系统中所有的进程形成一种进程树的层次体系;挂起命令可由进程自己和其他进程发出,但是解除挂起命令只能由其他进程发出。进程控制块(PCB):PCB转载 2017-09-16 22:01:07 · 246 阅读 · 0 评论 -
Java 四种线程池的用法分析
1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start();那你就out太多了,new Thr转载 2017-09-07 12:49:22 · 264 阅读 · 0 评论 -
线程之间的通信(thread signal)
线程通信的目的是为了能够让线程之间相互发送信号。另外,线程通信还能够使得线程等待其它线程的信号,比如,线程B可以等待线程A的信号,这个信号可以是线程A已经处理完成的信号。通过共享对象通信有一个简单的实现线程之间通信的方式,就是在共享对象的变量中设置信号值。比如线程A在一个同步块中设置一个成员变量hasDataToProcess值为true,而线程B同样在一个同步块中读取这个成员变量转载 2017-08-24 10:01:44 · 934 阅读 · 0 评论 -
volatile和synchronized
volatile和synchronized特点首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据Java内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized关键字解转载 2017-08-24 09:59:19 · 145 阅读 · 0 评论 -
全面理解Java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,转载 2017-08-23 23:13:30 · 142 阅读 · 0 评论 -
JVM_Java内存模型
1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型和线程之前,先简单介绍一下硬件的效率与一致性。2.硬件的效率与一致性转载 2017-08-23 22:49:38 · 153 阅读 · 0 评论 -
JVM_内存区域
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子转载 2017-08-23 11:31:03 · 184 阅读 · 0 评论 -
JVM_Java垃圾处理机制
一:如何确定对象已死?1.1引用计数法引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象实例都有一个引用计数。当一个对象被创建时,且将该对象实例分配给一个变量,该变量计数设置为1。当任何其它变量被赋值为这个对象的引用时,计数加1(a = b,则b引用的对象实例的计数器+1),但当一个对象实例的某个引用超过了生命周期或者被设置为一个新值时,对象实例的引用计数器减1。任何引用计数器为原创 2017-08-23 20:01:36 · 539 阅读 · 0 评论 -
Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
参考文章: http://blog.csdn.net/chen77716/article/details/6618779目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数据同步需要依赖锁,那锁的同步又依赖转载 2017-09-01 16:44:23 · 1836 阅读 · 0 评论