JVM
文章平均质量分 74
奔跑-起点
这个作者很懒,什么都没留下…
展开
-
hadoop1.2.1伪分布式搭建
0.使用host-only方式 将Windows上的虚拟网卡改成跟Linux上的网卡在同一网段 注意:一定要将widonws上的WMnet1的IP设置和你的虚拟机在同一网段,但是IP不能相同1.Linux环境配置(windows下面的防火墙也要关闭) 1.1修改主机名 vim /etc/sysconfig/network 1原创 2016-03-01 17:41:22 · 399 阅读 · 0 评论 -
Java HashMap工作原理及实现
1. 概述从本文你可以学习到:什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗?equals()和hashCode()的都有什么作用?你知道hash的实现吗?为什么要这样实现?如果HashMap的大小超过了负载因子(load factor)定义的原创 2016-03-29 01:00:51 · 405 阅读 · 0 评论 -
Java常用排序算法
本文由网络资料整理而来,如有问题,欢迎指正!分类:1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定原创 2016-03-29 02:38:57 · 349 阅读 · 0 评论 -
linux修改max user processes limits
具体:最近新上了一批服务器,内核升级到了2.6.32版本,部署完MySQL实例后上到线上,直接负载冲到15,cpu使用达到700%。01:20:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-1503:50:01 PM 34 1506 22.95 18.11 11.7801:20:01原创 2016-03-29 12:24:37 · 41919 阅读 · 1 评论 -
Disruptor入门
翻译自Disruptor git库教程 英文地址获得Disruptor可以通过Maven或者下载jar来安装Disruptor。只要把对应的jar放在Java classpath就可以了。基本的事件生产和消费我们从一个简单的例子开始学习Disruptor:生产者传递一个long类型的值给消费者,而消费者消费这个数据的方式仅仅是把它打印出来。首先声明一个Eve转载 2016-04-11 13:21:26 · 811 阅读 · 0 评论 -
LMAX Disruptor——一个高性能、低延迟且简单的框架
原文地址:LMAX Disruptor – High Performance, Low Latency and Simple Too 翻译:杨帆 校对:丁一Disruptor是一个用于在线程间通信的高效低延时的消息组件,它像个增强的队列,并且它是让LMAX Exchange跑的如此之快的一个关键创新。关于什么是Disruptor、为何它很重要以及它的工作原理方面的信息都呈爆炸性增长 ——转载 2016-06-27 11:10:40 · 1494 阅读 · 0 评论 -
如何使用Disruptor(二)如何从Ringbuffer读取
英文原文:http://ifeve.com/dissecting-the-disruptor-how-do-i-read-from-the-ring-buffer/作者:Trisha 译者:古圣昌 校对:方腾飞从上一篇文章中我们都了解了什么是Ring Buffer以及它是如何的特别。但遗憾的是,我还没有讲述如何使用Disruptor向Ring Buffer写数据和从Ri转载 2016-06-27 11:12:09 · 352 阅读 · 0 评论 -
tomcat利用setenv对内存的限制和docker中tomcat内存的优雅配置
说起对tomcat内存的限制,对于一个不熟悉的童鞋来说肯定是先google、百度,国内的文章都比较千篇一律。我来说说我在项目中的配置。一、最常见的配置修改catalina.sh或catalina.bat这或许是百度、google搜索到的最多的。下图是开源中国的tomcat配置:当我们打开catalina.sh或catalina.bat瞬间蒙了,几百行不熟悉的脚本,下原创 2016-08-05 11:35:49 · 2653 阅读 · 0 评论 -
收集Tomcat异常日志并发送邮件
脚本功能:收集Tomcat异常日志并发送邮件,如果修改正则表达式,也可以用于收集其他日志文件的错误信息运行环境:Python2.7/2.4皆可运行脚本使用方法:可利用Crontab或者计划任务来指定时间运行,例如:*/10 * * * * 脚本路径脚本运行效果如下:脚本内容如下:下载脚本: tomcat_log_err原创 2016-10-21 16:18:21 · 2028 阅读 · 0 评论 -
Java Thread.join()详解
一、使用方式。join是Thread类的一个方法,启动线程后直接调用,例如:Thread t = new AThread(); t.start(); t.join();二、为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主原创 2016-10-17 11:58:42 · 452 阅读 · 0 评论 -
线程同步(互斥锁与信号量的作用与区别)
“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信原创 2016-10-27 10:26:21 · 933 阅读 · 0 评论 -
JAVA线程池shutdown和shutdownNow的区别
shutDown() 当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。 shutdownNow() 根据JDK文档描述,大致意思原创 2016-10-27 13:42:32 · 432 阅读 · 0 评论 -
JAVA Runtime.addShutdownHook()方法{拿到线程句柄,在程序关闭之前调用释放资源}
Runtime#addShutDownHook方法是给虚拟机增加一个虚拟机关闭时的调用钩子,在虚拟机关闭的时候调用这些钩子线程。还是非常有用的一个方法,最直接的用法就是监控了,因为其是在虚拟机临关闭时被调用,所以天生可以记录虚拟机关闭这件事情,及其相关的信息;再就是清理资源什么的,也可以做一个钩子线程,这样就不用再应用中为这些清理资源的操作找合适的位置了;下面先翻译一下这个方法的Java do原创 2016-12-14 09:48:26 · 2755 阅读 · 0 评论 -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗。本文主要介绍如何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转储文件分析,找到内存泄露的根源。概述原创 2017-01-05 10:44:03 · 528 阅读 · 1 评论 -
在Java中如何高效判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的。本文将分析几种常见用法及其时间成本。检查数组是否包含某个值的方法使用Listpublic原创 2016-03-29 00:59:12 · 439 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁的使用
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人原创 2016-03-27 04:37:39 · 382 阅读 · 0 评论 -
Linux最大线程数限制及当前线程数查询
1、总结系统限制有: /proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值 /proc/sys/kernel/thread-max max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程 /proc/sys/vm/max_map_count 硬件内存大小原创 2016-03-29 23:55:00 · 608 阅读 · 0 评论 -
多线程断点下载
功能很简单,就是启动多个线程分别从给定的地址下载数据,用RandomAccessFile写到目标文件。实现思路是: 1、获得连接的长度(即要下载的文件大小),除以设定的线程数,即得到每个线程要下载的大小。 2、记录临时文件,文件中记录每个线程的编号(id),该线程要下载的起始位置、终止位置和当前位置(当前位置在首次下载时与起始位置相同)。 3、启动具体执行原创 2016-03-30 18:46:25 · 307 阅读 · 0 评论 -
Java经典设计模式(2):七大结构型模式(附实例和详解)
总体来说设计模式分为三大类:创建型模式、结构型模式和行为型模式。博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则。设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章: Java经典设计模式之五大创建模式(附实例和详解)。接下来我们看看结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中转载 2016-04-02 13:06:44 · 559 阅读 · 0 评论 -
Java经典设计模式(3):十一种行为型模式(附实例和详解)
Java经典设计模式共有21中,分为三大类:创建型模式(5种)、结构型模式(7种)和行为型模式(11种)。本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:Java经典设计模式之五大创建型模式(附实例和详解)、 Java经典设计模式之七大结构型模式(附实例和详解)。行为型模式细分为如下11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式转载 2016-04-02 13:09:44 · 830 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们原创 2016-04-02 14:53:45 · 388 阅读 · 0 评论 -
关于影响NodeManager执行MR任务constainer数量的设置问题
在使用hadoop进行离线大数据处理的时候,集群规模比较下,内存受到限制,由于要跑MR,因此Mapper和Reducer的数量直接决定程序的执行,由于默认情况下 一个bolck块对应一个Mapper,一个Mapper需要向ResourceManager申请执行的资源,ResourceManager进行资源分配而NodeManager负责资源的供给和隔离,由于执行的文件特别大,因此启动了很多的Map原创 2016-03-10 12:50:40 · 4779 阅读 · 0 评论 -
Hadoop在运行几个T数据量时报堆内存溢出
问题描述: Hadoop提交作业,运行几个T数据量,由于数据量巨大,造成HADOOP频频的报出JAVA堆内存溢出。错误日志: Error: java.lang.OutOfMemoryError: Java heap space at sun.net.www.http.ChunkedInputStream.processRaw(ChunkedInputStream.java:354)原创 2016-03-10 18:05:31 · 4025 阅读 · 0 评论 -
JVM调优总结:一些概念
数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,return原创 2016-03-25 17:26:22 · 669 阅读 · 0 评论 -
关于内存溢出
对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么多大多数在解决OOM的情况,于此,本文就只阐述这个内容,携带一些分析和理解和部分扩展内容,也就是JVM宕机中的一些问题,OK,下面说下OOM的常见情况: 第一类内存溢出,也是大家认为最多,第一反应认为是的内存溢出,就是堆栈溢出:那什么样的情况就是堆栈溢出呢?当你看到下面的关键字的时候它就是堆栈溢出了:j原创 2016-03-14 14:07:58 · 2616 阅读 · 0 评论 -
Java并发编程:synchronized
虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。[非static的使用的是对象锁,static的使用的是类锁]以下是本文的目录大纲:一.什么时候会出现线程安全问题?原创 2016-03-25 17:23:33 · 1090 阅读 · 0 评论 -
理解Java虚拟机体系结构
1 概述众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1 Java程序执行流程Java程序的执行依赖于编译环境和运行环境。源码代码转变成可原创 2016-03-25 17:28:36 · 1289 阅读 · 0 评论 -
Java并发编程:Lock(上)
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synch原创 2016-03-27 01:25:09 · 500 阅读 · 0 评论 -
Java并发编程:Lock(下)
三.锁的相关概念介绍在前面介绍了Lock的基本使用,这一节来介绍一下与锁相关的几个概念。1.可重入锁如果锁具备可重入性,则称作为可重入锁。像synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。举个简单的例子,当一个线程执行到某个synchro原创 2016-03-27 01:26:15 · 365 阅读 · 0 评论 -
Disruptor 极速体验
已经不记得最早接触到 Disruptor 是什么时候了,只记得发现它的时候它是以具有闪电般的速度被介绍的。于是在脑子里, Disruptor 和“闪电”一词关联了起来,然而却一直没有时间去探究一下。 最近正在进行一项对性能有很高要求的产品项目的研究,自然想起了闪电般的 Disruptor ,这必有它的用武之地,于是进行了一番探查,将成果和体会记录在案。一、什么是 Disr原创 2017-03-05 20:46:37 · 355 阅读 · 0 评论