
性能优化
bright60
这个作者很懒,什么都没留下…
展开
-
Java开发中的23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2015-12-08 19:24:53 · 515 阅读 · 0 评论 -
什么是依赖注入?
针对今天的培训,大家可以在通过这篇文章理解: Spring 能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的 管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现转载 2015-12-08 15:56:31 · 368 阅读 · 0 评论 -
成为JavaGC专家(2)—如何监控Java垃圾回收机制
本文是成为Java GC专家系列文章的第二篇。在第一篇《深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。 在本文中,我将解释JVM到底是如何执行垃圾回收处理的。 什么是GC监控? 垃圾回收收集监控指的是搞清楚JVM如何执行GC的过程,例如,我们可以查明转载 2015-12-07 14:42:14 · 343 阅读 · 0 评论 -
成为Java GC专家(3)—如何优化Java垃圾回收机制
本文是成为Java GC专家系列文章的第三篇。在第一篇《成为JavaGC专家Part I — 深入浅出Java垃圾回收机制》中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生代和老年代,你应该了解的JDK7中的5种GC类型,以及这5种类型对于应用性能的影响。 在第二篇《成为JavaGC专家Part II — 如何监控Java垃圾回收机制》,我解释了JVM实际上是如何执行垃圾回收转载 2015-12-07 14:46:42 · 333 阅读 · 0 评论 -
成为Java GC专家(5)—Java性能调优原则
这是“成为Java GC专家”系列的第五篇文章。在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念。你应该了解了JDK7中5种GC类型以及各种类型对应用程序的影响。 在第二篇如何监控Java的垃圾回收中,阐述了JVM是怎样实际执行垃圾回收的,我们怎样去监控GC以转载 2015-12-07 14:34:16 · 446 阅读 · 0 评论 -
成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响
在第一篇文章 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制 中我们学习了不同GC算法的执行过程,GC如何工作,新生代及老年代的基本概念,在JDK7中你应该了解的5种GC类型以及他们的性能如何。 在第二篇文章 成为JavaGC专家Part II — 如何监控Java垃圾回收机制 中我们学到了JVM到底是如何执行垃圾回收,我们如何监控GC,以及那些工具可以使得监控过程更高效转载 2015-12-07 14:48:12 · 370 阅读 · 0 评论 -
详解Java GC的工作原理+Minor GC、FullGC
JVM内存管理和JVM垃圾回收 JVM内存组成结构 JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组原创 2015-12-07 13:34:26 · 588 阅读 · 0 评论 -
JVM系列三:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同转载 2015-12-07 14:31:04 · 692 阅读 · 0 评论 -
JAVA8中JVM的变化和优化
在JVM中,我们经常提到的就是堆(Head)了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常有用的,在这里面了解JVM的GC原理,是非常重要的一块知识。 我们都知道对于一个大型网站,如果JVM频繁发生FULL GC,那么将会是致命的危险,不仅仅会造成网站响应迟转载 2017-12-29 14:29:35 · 12420 阅读 · 3 评论 -
APM - JAVA 性能优化工具
APM缩写是 Application Performance Management & Monitoring,应用程序的性能服务管理和监控, 用到过一个工具叫TProfiler,来查看方法耗时的,可以具体到每一个get,set方法的耗时,当然可以通过设置包路径,来过滤不必要的耗时信息,TProfiler是淘宝自研的性能监控工具,源码地址:http://code.taob转载 2017-12-29 14:33:20 · 3715 阅读 · 0 评论 -
JVM 优化经验总结
开始之前 Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码), 就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 注意:本文仅针对 JDK7、HotSPOT转载 2015-12-07 14:54:04 · 528 阅读 · 0 评论 -
转换数组 Array为ArrayList
his article analyzes answers for a top-voted questions on Stack Overflow. The person who asked this question got a lot of reputation points, which could grant him permissions to do a lot of things on转载 2015-12-05 22:41:05 · 388 阅读 · 0 评论 -
诊断Java中的内存泄露
昨天给大家讲的JAVA内存结构,转发以下几个命令用来分析内存问题非常有用: 首先,我用下面的命令监视进程: 1 while ( sleep 1 ) ; do ps -p $PID -o %cpu,%mem,rss ; done转载 2015-12-04 10:06:38 · 356 阅读 · 0 评论 -
从几个sample来学习Java堆,方法区,Java栈和本地方法栈
最近在看《深入理解Java虚拟机》,书中给了几个例子,比较好的说明了几种OOM(OutOfMemory)产生的过程,大部分的程序员在写程序时不会太关注Java运行时数据区域的结构: 感觉有必要通过几个实在的例子来加深对这几个区域的了解 1)Java堆 所有对象的实例分配都在Java堆上分配内存,堆大小由-Xmx和-Xms来调节,sample如下所示:转载 2015-12-10 10:22:13 · 307 阅读 · 0 评论 -
深入理解 Java中的 流 (Stream)
小站博文地址:深入理解 Java中的 流(Stream)机制 最近在看《Hadoop:The Definitive Guide》,对其分布式文件系统HDFS的Streaming data access不能理解。基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手。流机转载 2015-12-10 11:24:46 · 323 阅读 · 0 评论 -
Efficient Counter in Java
You may often need a counter to understand the frequency of something (e.g., words) from a database or text file. A counter can be easily implemented by using a HashMap in Java. This article compares转载 2015-12-10 10:18:36 · 336 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。 文章要求读者熟悉 JVM 内置的通用垃圾回收原则。堆内存划分为 Eden、Survivor 和 Tenured/Old 空间转载 2015-12-10 10:02:29 · 329 阅读 · 0 评论 -
触发Full GC执行的情况
除直接调用System.gc外,触发Full GC执行的情况有如下四种。 1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误: java.lang.OutOfMemoryError: Java heap space 为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在转载 2015-12-10 10:05:53 · 305 阅读 · 0 评论 -
Java内存与垃圾回收调优
要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的。今天我们将会了解JVM内存的各个部分、如何监控以及垃圾收集调优。 Java(JVM)内存模型 正如你从上面的图片看到的,JVM内存被分成多个独立的部分。广泛地说,JVM堆内存被分为两部分——年轻代(Young Generation)和老年代(Old Generation)。 年轻代 年轻代是所有新对象产生转载 2015-12-10 10:09:28 · 348 阅读 · 0 评论 -
How to write a counter in Java 8?
Writing a counter in Java can be as simple as 2 lines. In addition to its simplicity, we can also utilize the parallel computation to increase the counter's performance. import java.util.st转载 2015-12-10 10:35:53 · 581 阅读 · 0 评论 -
5 Ways of Creating a Stream in Java 8
1. From Arrays String[] arr = { "program", "creek", "program", "creek", "java", "web", "program" }; stream = Stream.of(arr); stream = Stream.of("program", "creek", "p转载 2015-12-10 10:47:40 · 507 阅读 · 0 评论 -
JAVA的线程
昨天有关线程内容,这里再多提供一些资料供大家参考: JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。(网上很多老文章都是说JAVA多线程实现方式只有Thread和Runnable这2种,其实是3种,第三转载 2015-12-11 11:29:06 · 327 阅读 · 0 评论 -
Mysql 慢日志配置和分析
[mysqld] // 开启慢查询 slow_query_log = 1 // 设置慢查询时间 10s,如果不配置long_query_time,默认是10s long_query_time=10 // 慢查询日志保存路径 slow_query_log_file= /var/log/server/mysql/mysql_sloq.log // 开启 记录没有使用索引查转载 2018-01-24 11:42:26 · 741 阅读 · 0 评论