
java内存模型
还不够
这个作者很懒,什么都没留下…
展开
-
Java内存模型FAQ(三)JSR133是什么?
原文:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html 第三章译者:Alex从1997年以来,人们不断发现Java语言规范的17章定义的Java内存模型中的一些严重的缺陷。这些缺陷会导致一些使人迷惑的行为(例如final字段会被观察到值的改变)和破坏编译器常见的优化能力。Java内存模型是一个雄心勃勃的计划,转载 2017-04-28 09:22:12 · 271 阅读 · 0 评论 -
JVM性能调优
原文 http://m.blog.youkuaiyun.com/article/details?id=5695893最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenure转载 2017-05-20 19:13:25 · 251 阅读 · 0 评论 -
JVM调优总结(十)-调优方法
原文: http://pengjiaheng.iteye.com/blog/552456JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。转载 2017-05-20 23:12:59 · 262 阅读 · 0 评论 -
性能分析神器VisualVM
原文: http://www.cnblogs.com/wade-xu/p/4369094.htmlVisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作转载 2017-05-21 13:39:28 · 366 阅读 · 0 评论 -
visualVM远程监控tomcat
原文: http://blog.youkuaiyun.com/aaron_lm/article/details/51718614jdk自带有个jvisualvm工具、该工具是用来监控Java运行程序的cpu、内存、线程等的使用情况。废话不多说 ,看配置远程监控过程!1、 tomcat启动配置,在bin/startup.sh最后 一行前加入配置:export CATALINA_OPTS=转载 2017-05-21 15:48:26 · 344 阅读 · 0 评论 -
一个jvm配置示例
xms_size='2g'xmx_size='4g'JAR_OPTS="-javaagent:/app/weblogic/cashier-service_01/gtrace/gtrace-bootstrap-1.6.1-SNAPSHOT.jar -Dgtrace.path=/app/weblogic/cashier-service_01 -Dgtrace.appcode=qd0xHCvln原创 2017-05-21 16:56:54 · 392 阅读 · 0 评论 -
GC日志分析
JVM的GC日志的主要参数包括如下几个:-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)-转载 2017-05-21 17:34:42 · 329 阅读 · 0 评论 -
JVM的重排序
原文:http://ifeve.com/jvm-reordering/重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境。在并发程序中,程序员会特别关注不同进程或线程之间的数据同步,特别是多个线程同时修改同一变量时,必须采取可靠的同步或其它措施保障数据被正确地转载 2017-07-25 11:34:47 · 325 阅读 · 0 评论 -
死磕 Java 并发 :Java 内存模型之 happens-before
原文: 微信公众号 程序员大咖 里面各种好文章,大赞来源:chenssy,cmsblogs.com/?p=2102那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-befo转载 2017-09-19 13:56:54 · 371 阅读 · 0 评论 -
JVM调优命令-jmap
原文:https://www.cnblogs.com/myna/p/7573843.htmljmapJVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细...转载 2018-06-01 17:31:52 · 331 阅读 · 0 评论 -
Spring Boot引起的“堆外内存泄漏”排查及经验总结
原文:https://juejin.im/post/5c2ef77ae51d4551de1d769b背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:Metaspa...转载 2019-01-18 16:58:33 · 1101 阅读 · 0 评论 -
jdk1.8-jetty-swap被占满问题排查
原文:http://www.longtask.net/2018/11/15/swap-used-full/#top背景线上服务收到报警,报警内容:虚拟机swap区占用比例超过80%,如图:本文着重描述排查问题的过程,在这个过程中不断的猜测–>验证–>推翻–>再猜测–>再验证–>再推翻,这个过程更有意思;swap是什么潜意识中,当进程需要申请...转载 2019-01-18 17:02:33 · 893 阅读 · 0 评论 -
JVM
JVM架构当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的字节码自适应解析,边解析边运行,然后pc寄存器指向了main函数所在位置,虚拟机开始为main函数在Java栈中预留一个栈帧(每个方法都对应一个栈帧),然后开始跑main函数,main函数里的代码被执行引擎映射成本地操作系统里相应的实现,然后调用本地方法接口,本地方法运行的时候,转载 2017-05-18 12:24:03 · 438 阅读 · 0 评论 -
深入理解Java内存模型(七)——总结
深入理解Java内存模型(七)——总结处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,转载 2017-04-27 10:00:24 · 331 阅读 · 0 评论 -
JMM Cookbook(一)指令重排
原文地址:http://gee.cs.oswego.edu/dl/jmm/cookbook.html 第一章 译者:欧振聪 校对:李同杰前言指令重排内存屏障多处理器指南指令重排对于编译器的编写者来说,Java内存模型(JMM)主要是由禁止指令重排的规则所组成的,其中包括了字段(包括数组中的元素)的存取指令和监视器(锁)的控制指令。Volatile与监视器JMM中关于vola转载 2017-04-28 09:22:49 · 384 阅读 · 0 评论 -
Java内存模型Cookbook(二)内存屏障
Java内存模型Cookbook(二)内存屏障原文:http://gee.cs.oswego.edu/dl/jmm/cookbook.html 第二节作者:Doug Lea 翻译:潘曦 校对:方腾飞指令重排内存屏障多处理器指南编译器和处理器必须同时遵守重排规则。由于单核处理器能确保与“顺序执行”相同的一致性,所以在单核处理器上并不需要专门做什么处理,就可以保证正确的执行转载 2017-04-28 09:23:45 · 292 阅读 · 0 评论 -
聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障
在聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了硬件层提供了满足某些一致性需求的能力,Java内存模型利用了硬件层提供的能力指定了一系列的语法和规则,让Java开发者可以隔绝这种底层的实现专注于并发逻辑的开发。这篇我们来看看硬件层是如何提供这些实现一致性需求的能力的。硬件层提供了一系列的内存屏障 memory barrier / memory转载 2017-04-29 23:19:35 · 342 阅读 · 0 评论 -
深入Java底层:内存屏障与JVM并发详解(1)
深入Java底层:内存屏障与JVM并发详解(1)2010-04-27 09:17 Dennis Byrne infoQ 字号:T | T本文介绍了内存屏障对多线程程序的影响,同时将研究内存屏障与JVM并发机制的关系,如易变量(volatile)、同步(synchronized)和原子条件式(atomic conditional)。AD:51CTO 网+ 第十转载 2017-04-29 23:44:24 · 1327 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
Java 理论与实践: 正确使用 Volatile 变量volatile 变量使用指南Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Go转载 2017-04-30 00:46:53 · 355 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-4volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,转载 2017-04-27 09:55:39 · 241 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-1并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并转载 2017-04-27 09:56:53 · 260 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-2数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。转载 2017-04-27 09:57:17 · 328 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
深入理解Java内存模型(三)——顺序一致性本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-3数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。转载 2017-04-27 09:57:54 · 384 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
深入理解Java内存模型(五)——锁本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-5锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:转载 2017-04-27 09:58:50 · 292 阅读 · 0 评论 -
深入理解Java内存模型(六)——final
深入理解Java内存模型(六)——final本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/java-memory-model-6与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构转载 2017-04-27 09:59:36 · 399 阅读 · 0 评论