`
txidol
  • 浏览: 54461 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java虚拟机学习笔记(优化及并发)

 
阅读更多

相关优化手段:


内联、常量折叠、公共表达式消除、自动装箱消除、

热度代码、逃逸分析、锁消除、栈上分配、标量替换

数组边界检查消除 ...


volatile变量:


每次使用都会回主内存刷值
每次赋值都会同步到主内存
不会被指令重排序优化


特性:


原子性 read load assign use store write synchronized(lock unlock)
可见性 volatile synchronized final
有序性volatile synchronized


先行发生原则:


1.程序次序规则 同线程
2.管理锁定规则 lock unlock
3.volatile变量规则 不受指令重排序干扰,真是时间上也先行
4.线程启动规则start()在线程其他动作之前
5.线程终止规则 其他动作及Thread.join()在Threa.isAlive()终止检测之前
6.线程中断规则interrupt()在Thread.interruted()之前
7.对象终结规则对象初始化完成先于它的finalize()方法
8.传递性A先于B,B先于C,那么A先于C


数据:


1.不可变 final Integer String
2.绝对线程安全
3.相对线程安全 Vector HashTable Collections synchronizedCollection
4.线程兼容绝大多数
5.线程对立 Thread的resume 和 suspend 方法 System.setIn()和System.setOut()


线程安全实现方法


1.互斥同步 synchronized ReentrantLock(等待可中断,公平锁,绑定多条件)
2.非阻塞同步 TestAndSet
3.无同步方案 可重入代码(结果可预测) 线程本地存储(生成消费者 消费者 web TreadLocal)


锁优化


1.自旋锁与自适应自旋 -XX:PreBlockSpin 次数
2.锁消除
3.锁粗化
4.轻量级锁
5.偏向锁 -XX:+UseBiasedLocking

分享到:
评论

相关推荐

    Java 虚拟机学习笔记:Java 内存区域,垃圾收集,内存分配与回收策略,JVM 调优,文件结构,类加载机制,Java 程序

    Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...

    学习笔记之java虚拟机

    ### 学习笔记之Java虚拟机详解 #### 运行时数据区域概览 Java虚拟机(JVM)运行时数据区域主要包括以下几部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区以及运行时常量池。 1. **程序计数器**: -...

    java学习笔记markdown

    9. **JVM内部机制**:简述Java虚拟机的工作原理,包括类加载、内存管理、垃圾回收机制,有助于优化代码性能。 10. **泛型**:讨论Java泛型的使用,如何编写类型安全的代码,并理解其类型擦除的原理。 11. **枚举与...

    Java面试题和学习笔记

    Linux面试专题及答案+ActiveMQ消息中间件面试专题+Java基础面试题+MySQL性能优化的21个最佳实践+微服务面试专题及答案+深入理解java虚拟机+设计模式面试专题及答案+开源框架面试专题及答案+并发编程及答案+Spring...

    Java学习笔记——良葛格

    Java以其“一次编写,到处运行”的特性赢得了全球程序员的喜爱,它的跨平台能力得益于Java虚拟机(JVM)。 接着,笔记会深入讲解Java的语法基础,如变量、数据类型、运算符、流程控制语句(如if、for、while)以及...

    JVM 学习笔记(Java虚拟机)

    **JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM:...

    Java并发编程学习笔记

    Synchronized是Java中的关键字,用于实现线程同步,它基于Java虚拟机的Monitor机制,通过对象头的锁状态来控制对共享资源的访问。当一个线程进入同步块时,会获取对象的锁,其他线程则需等待该锁被释放。 2. **可重...

    深入Java虚拟机JVM类加载学习笔记

    ### 深入Java虚拟机JVM类加载学习笔记 #### 一、Classloader机制解析 在Java虚拟机(JVM)中,类加载器(ClassLoader)是负责将类的`.class`文件加载到内存中的重要组件。理解类加载器的工作原理对于深入掌握JVM以及...

    Java学习笔记(源码)

    13. **JVM原理**:理解Java虚拟机的工作方式,包括类加载、内存管理和垃圾回收机制,有助于优化程序性能。 14. **Java 8及更高版本的新特性**:例如lambda表达式、Stream API、Optional类等,这些新特性使Java编程...

    java虚拟机笔记及代码.zip

    Java虚拟机(JVM)是Java程序运行的核心,它是一个抽象的计算机系统,负责执行Java字节码。在深入理解JVM之前,我们先要明白什么是字节码:Java源代码经过编译后生成的中间表示,即.class文件,里面包含的就是字节码...

    java超强学习笔记

    8. **Java虚拟机(JVM)**:深入理解JVM的工作原理,包括内存管理、垃圾回收、类加载机制,对于优化程序性能和解决内存泄漏等问题大有裨益。 9. **设计模式**:笔记可能会涵盖常见的设计模式,如单例、工厂、观察者...

    Java 并发学习笔记:进程和线程,并发理论,并发关键字,Lock 体系,原子操作类,发容器 & 并发工具,线程池,并发实践

    Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的...

    瑜琅java学习笔记

    ### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...

    JVM:深入理解Java虚拟机 - 学习笔记

    《JVM:深入理解Java虚拟机》是一本深入解析Java虚拟机工作原理和技术细节的经典书籍。这份学习笔记将涵盖JVM的关键概念、架构以及它如何影响Java程序的性能。我们将探讨以下几个方面: 1. **JVM概述** Java虚拟机...

    java虚拟机源码学习-UnderstandingTheJVM:深入理解Java虚拟机(周志明)源码及学习笔记

    《深入理解Java虚拟机》是Java开发者们深入探讨Java运行机制的经典之作,作者周志明以其深入浅出的讲解方式,揭示了Java虚拟机(JVM)的工作原理。本资源包含该书第三版的源码分析及学习笔记,旨在帮助读者更透彻地...

    Java学习笔记(必看经典).doc

    9. **Java虚拟机(JVM)**:Java程序被编译成字节码后,由JVM负责解释执行。JVM是Java平台的核心,它实现了跨平台的能力,并通过垃圾回收机制自动管理内存。 10. **Java标准库**:Java的API包含了大量预定义的类和...

    Java并发编程与高并发解决方案-学习笔记-www.itmuch.com.pdf

    本文将基于文档《Java并发编程与高并发解决方案-学习笔记***.pdf》中提供的内容,来详细阐述并发编程和高并发的基本概念、CPU多级缓存与缓存一致性、以及Java内存模型。 ### 并发与高并发概念 在现代多线程编程中...

    JAVA学习笔记-良葛格

    Java语言具有跨平台性(Write Once, Run Anywhere),这是因为它具有JVM(Java虚拟机)的存在。任何操作系统上的JVM都可以运行相同的Java字节码,从而避免了针对不同平台编写不同代码的需要。 Java语言的另一特点是...

    良葛格java学习笔记

    8. **JVM原理**:简要介绍Java虚拟机的工作原理,包括内存模型、类加载机制、垃圾收集器和调优策略。 9. **网络编程**:涉及Socket编程,讲解如何建立客户端和服务端通信,以及套接字和服务器套接字的使用。 10. *...

Global site tag (gtag.js) - Google Analytics