![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 53
java 生态相关技术
wwcxq
一个程序猿老兵
展开
-
并发编程体系-JUC思维导图
volatile: 对volatile的定义:Java允许线程访问共享变量,为了确保共享变量能被准确和一致性的更新,线程应该确保通过排它锁单独获得变量。如果一个变量被声明为volatile,Java内存模型确保所有线程读到这个变量的值是一致的。那如何保证呢,原理是JVM会向处理器发送一条LOCK指令,将这个变量所在的工作内存写会到主存。然后在多处理器下,为了保证每个线程的工作内存是一致的,就出现了缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己的变量是不是过期了,当发现变量对应的地...原创 2021-03-11 11:27:00 · 326 阅读 · 0 评论 -
JVM性能监控故障处理工具
在JDK的bin目录里,有打包部署签名,调试监控等工具。jps:虚拟机进程状态监控工具,和Linux里的PS命令类似,可以列出正在运行的虚拟机进程,并显示执行的主类(main方法所在类)jstat:虚拟机统计信息监控工具。用了监视虚拟机各种运行状态信息的工具。可以显示本地JVM进程中的类加载,内存,GC,JIT等运行时数据,这个命令是在服务器运行期定位JVM性能问题的常用工具。jinfo:Java配置信息工具,用于实时查看和调整JVM参数。jstack:Java堆栈跟踪工具,用于生成虚拟机当原创 2020-12-19 16:40:00 · 146 阅读 · 1 评论 -
JVM内存调优最佳实践
吞吐量优先的应用,设置并行收集器比如:java -Xmx3500m -Xms3500m -Xmn2g -Xss128K -XX:+useParallelGC -XX:ParallelGCThreads=20-XX:+UseParallelGC:设置为并行GC垃圾收集器,只对年轻代有效。-XX:ParallelGCThreads=20:配置并行收集器线程数,此值最好和处理器数目一致。-XX:+UseParallelOldGC:配置老年代垃圾收集方式。-XX:MaxGCPauseMillis原创 2020-12-17 12:37:40 · 472 阅读 · 0 评论 -
JVM堆内存划分和调优
JVM主要包括4个子系统:类加载器,运行时数据区,执行引擎,编译器。JDK 1.8以前,分为新生代,老年代和永久代三个区域。1.8之后永久代换成了meta space元空间,主要是存放方法中的操作临时对象等,JDK1.8之前是占用JVM内存,JDK1.8之后直接使用物理内存。其中新生代又分为Eden,S0,S1这三个部分。new出来的对象先分配到eden区,经过几次minor GC还存活的对象就会被放到S0区域,再经过几次minor GC还存活的对象会放到S1区。最后达到minor GC的阈值就放到原创 2020-12-17 11:12:25 · 99 阅读 · 0 评论 -
JVM的GC垃圾回收流程
对于整个GC流程里,主要的事情就是处理年轻代与老年代(Tenured)的内存清理操作。元空间(永久代)不在GC范围内,在JDK 8里,已取消永久代了。(1)当有一个新的对象产生,JVM需要为该对象申请内存空间,先判断Eden区是否有空间,如果有,直接将对象保存在eden区。(2)如果Eden区内存空间不足,会自动执行一次minor GC操作,进行Eden区的无用内存空间清理。清理之后继续判断Eden区内存空情况,如果充足就直接保存对象。如果仍然内存空间不足,就判断存活区S0,S1空间,并将Ede原创 2020-12-17 11:01:07 · 278 阅读 · 0 评论 -
Web 应用开源项目大全
下面是一个Web应用的开源列表。没什么可说的,太疯狂了。尤其是Web 2.0那一堆。我不知道你怎么想,有些开源项目的源码写得挺不好的,尤其是性能方面。或许你会以为改一改他们就可以成为为自己所用,不过,改这些开源的项目还真不容易。玩玩还可以。数字媒体相册(Flickr, Picasa)Gallery,基于PHP + MySQL的Web相册。非常易于使用,包括一个配置向导,对于相片原创 2013-09-14 20:02:48 · 2014 阅读 · 2 评论 -
Java synchronized详解
第一篇:使用synchronized在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题。在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用。我们首先编写一个非常简单的多线程的程序,是模拟银行中的多个线程同时对同一个储蓄账户进行存款、取款操作的。在程序中我们使用了一个简化版本的Account类,代表了一原创 2013-12-06 16:15:29 · 415 阅读 · 0 评论 -
java.util.concurrent并发包JUC介绍
java.util.concurrent 包含许多线程安全、测试良好、高性能的并发构建块。不客气地说,创建 java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的并发操作。通过提供一组可靠的、高性能并发构建块,开发人员可以提高并发类的线程安全、可伸缩性、性能、可读性和可靠性。如果一些类名看起来相似,可能是因为 java.util.concu原创 2015-03-25 11:34:42 · 793 阅读 · 0 评论