
Jdk
xiaoshang
这个作者很懒,什么都没留下…
展开
-
使用Memory Analyzer tool(MAT)分析内存泄漏(三)
最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热部署的过程中,干的最多的一件事就是查内存泄露。 查内存泄露,最开始尝试用JDK自身的工具去解决这件事,通过jstat和jmap,去发现是否有内存泄露,当判断有内存泄露存在时,试图要去寻找内存泄露的点时,发现单纯使用JDK自身提供的工具没有什么很好的办法,我尝试过Jh转载 2014-03-07 15:27:12 · 3779 阅读 · 0 评论 -
Java Socket通信读取相关信息代码
ava Socket通信读取有不少需要我们注意的知识点。当我们在使用的时候有很多的问题摆在我们面前。下面我们就来详细的学习有关Java Socket通信读取的相关代码编写。以下是Java Socket通信读取的相关代码。import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fil转载 2012-12-04 22:42:19 · 500 阅读 · 0 评论 -
Java ServerSocket的服务端代码介绍
所谓Java ServerSocket通常也称作"套接字",有不少的时候需要我们详细的注意。接下来我们就看看什么是Java ServerSocket,希望大家有所收获。用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建转载 2012-12-04 22:41:09 · 556 阅读 · 0 评论 -
Java Socket实战之三:传输对象
前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象。首先需要一个普通的对象类,由于需要序列化这个对象以便在网络上传输,所以实现java.io.Serializable接口就是必不可少的了,如下:package com.googlecode.garbagecan.test.socket.sample3; public cla转载 2012-12-04 23:07:32 · 433 阅读 · 0 评论 -
Java Socket实战之一:单线程通信
现在做Java直接使用Socket的情况是越来越少,因为有很多的选择可选,比如说可以用spring,其中就可以支持很多种远程连接的操作,另外jboss的remoting也是不错的选择,还有Apache的Mina等等,但是在有些时候一些特殊情况仍然逃脱不了直接写Socket的情况,比如公司内部一些莫名其妙的游戏规则。废话不说了,下面就看看如果自己写Socket应该怎么做吧。首先是写一转载 2012-12-04 22:59:31 · 464 阅读 · 0 评论 -
Java多线程之消费者生产者模式
这个实例应该是学习线程的一个经典例子,生产者和消费者模式。代码写的很好,详细请看内容。/*@author shijin * 生产者与消费者模型中,要保证以下几点: * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized * 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized * 3 生产者生产的同时消费者不能消费转载 2012-12-04 23:09:06 · 470 阅读 · 0 评论 -
ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池
1、ExecutorService:是一个接口,继承了Executor:public interface ExecutorService extends Executor {}2、Executor:而Executor亦是一个接口,该接口只包含了一个方法:void execute(Runnable command);3、Executors转载 2012-12-04 20:15:30 · 972 阅读 · 0 评论 -
深入理解Java对象序列化lff
关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。转载 2012-12-04 23:22:34 · 534 阅读 · 0 评论 -
Java Socket传输数据的文件系统介绍
Java Socket传输数据在进行的时候有很多的事情需要我们不断的进行有关代码的学习。只有不断的学习才能掌握相关的问题。下面我们就详细的看看如何才能更好的使用这些技术。我们将这个对象串行化至文件系统,然后将之还原,Java Socket传输数据在这个过程其实类似于一个“压扁”和“充气”的过程,请注意,我们的Person类中包含一个嵌入对象,并且birthday变化,将之设置为transi转载 2012-12-04 22:55:39 · 557 阅读 · 0 评论 -
Java Socket线程的设计原理介绍
Java Socket线程我们经常会用到的技术,但是有很多程序员还是有不少的使用问题,下面我们就看看如何才能进行有关的代码编写,希望大家又说收获。网络的伟大之一也是信息共享,Server可以主动向所有Client广播消息,同时Client也可以向其它Client发布消息。下面看看如何开发一个可以实时传递消息的程序。Java Socket线程的设计原理:服务器端接受客户端的连转载 2012-12-04 22:52:43 · 475 阅读 · 0 评论 -
Java Socket实战之二:多线程通信
上一篇文章说到怎样写一个最简单的Java Socket通信,但是在上一篇文章中的例子有一个问题就是Server只能接受一个Client请求,当第一个Client连接后就占据了这个位置,后续Client不能再继续连接,所以需要做些改动,当Server没接受到一个Client连接请求之后,都把处理流程放到一个独立的线程里去运行,然后等待下一个Client连接请求,这样就不会阻塞Server端接收请转载 2012-12-04 23:04:26 · 438 阅读 · 0 评论 -
Java线程同步 (synchronized wait notify)
原文出处:http://blog.youkuaiyun.com/weizhaozhe/article/details/3922647注:wait notify 都是Object的方法 同步(阻塞) :是一种防止对共享资源访问导致的数据不一致的一种模式。详细请参看操作系统。在Java中,由于对多线程的支持,对同步的控制主要通过以下几个方法,synchronized转载 2012-07-20 16:44:05 · 476 阅读 · 0 评论 -
java web服务器cpu占用过高的处理
ava程序 cup使用率过高,会导致程序运行速度变慢,导致系统崩溃等原因是多向的。跟内存泄漏,数据库等都有关参考一些解决方案:检查是否有死循环。频繁的GC.或者有大量的线程。算法太复杂或者太多数据库连接的资源未释放或未关闭,数据库connection过于频繁。1,使用jps查找出java进程的pid,如3707转载 2013-06-20 09:42:34 · 4420 阅读 · 1 评论 -
使用Memory Analyzer tool(MAT)分析内存泄漏(二)
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defin转载 2013-06-19 16:03:15 · 639 阅读 · 0 评论 -
使用Memory Analyzer tool(MAT)分析内存泄漏(一)
前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的。所以找出是什么原因造成OutOfMemoryError非常重要。现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题。如未说明,本文均使用Java 5.0 on Windows XP SP3环境。 为转载 2013-06-19 16:01:47 · 788 阅读 · 0 评论 -
java变量理解
java中变量分两种类型:基本变量和引用变量 其中基本变量细分为:数值类型,字符类型(char),布尔类型(boolean) 引用变量细分为:类类型,接口类型,数组类型 其中数值类型有分为整型和浮点型: 具体如下: 整型有:byte(占一个字节) short(二个字节) int(四个字节) long(八个字节) 浮点型:转载 2013-03-27 14:51:32 · 644 阅读 · 0 评论 -
注意Java代码的内存泄漏
对于有语言编译基础的同志,要注意了,如果你是刚学java的.那么下面你必须要看.当然本人也是一样,也会出现下面某些错误。所以本人总结了一些。当然都是个人看法.不代表就是对的.也许有些是错的.同时也希望熟悉JAVA的高高手指出.或者有更好的看法或建议.都可以和我沟通.大家一齐来学习。同时这也是对自己的一种提高。在项目应用中.往往都是面临复杂的业务.而且用户量增加.内存使用自然转载 2012-12-07 09:49:06 · 494 阅读 · 0 评论 -
Java中的volatile关键字
关于volatile我们知道,在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量转载 2012-12-06 22:46:13 · 527 阅读 · 0 评论 -
初学Java多线程:线程简介
一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进程(由操转载 2012-12-06 22:54:20 · 411 阅读 · 0 评论 -
Java中用内存映射处理大文件
在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验。package test; import java.io.BufferedInputStream; import java.io.FileInputStream;转载 2012-12-06 23:17:40 · 493 阅读 · 0 评论 -
JAVA筆記-wait()、notify()、notifyAll() 執行緒間的等待與喚醒機制的互動
必須撰寫在synchronized的區塊內,當wait()被呼叫時,則會釋放所有的鎖,並寫在try-catch(InterruptedException e)內,1. void wait() 讓執行緒進入等待狀態2. void notify() 喚醒一個等待中的執行緒,若有多個執行緒,則由JVM決定3. void notifyAll() 喚醒所有等待中的執行緒转载 2012-12-06 22:11:37 · 1051 阅读 · 0 评论 -
Java Socket编程相关源代码的介绍
Java Socket编程需要大家仔细的学习,首先我们来看看有关的源代码,只有在源代码中才能找到我们需要的。希望大家有所帮助。Java Socket编程在不断发展中有不少的问题存在,下面我们就详细的看看如何才能更好的使用这个代码。接下来我们就看看相关的源代码介绍,希望对大家在之后的Java Socket编程中有所帮助。源代码介绍:yServer.java impor转载 2012-12-03 22:32:49 · 527 阅读 · 0 评论 -
浅谈JAVA中如何利用socket进行网络编程(一)
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 本文介绍的是JAVA中的socket网络编程,希望对你有帮助,一起来看。Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处转载 2012-12-03 21:33:02 · 474 阅读 · 0 评论 -
HashMap的线程安全类 ConcurrentHashMap
这是HashMap的线程安全类.它拥有Hashtable特殊实现。实现线程安全,并不是基本Sync.而是基本ReentrantLock 代码如下: V put(K key, int hash, V value, boolean onlyIfAbsent) { lock(); try { int c = coun转载 2012-12-03 12:53:29 · 955 阅读 · 0 评论 -
Java回调方式:Java Listener模式
每种语言都有自己回调的方法,java也不例外. Java的回调是采用多态的方式来回调.比如:interface MouseListener { //当click方法被调用的时候代表被鼠标点击了. void click(); }上面是一个接口,里面只有一个方法.先就通过一个例子展示java是如果施展多态的力量了.public class Model {转载 2012-12-03 10:47:25 · 1299 阅读 · 0 评论 -
java中的静态变量和实例变量的生命周期
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量 。 静态变量和实例变量的区别在于: 类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建转载 2012-12-03 10:09:14 · 1025 阅读 · 0 评论 -
对象的清除
对象使用完之后需要对其进行清除。对象的清除是指释放对象占用的内存。在创建对象时,用户必须使用new操作符为对象分配内存。不过,在清除对象时,由系统自动进行内存回收,不需要用户额外处理。这也是Java语言的一大特色,某种程度上方便了程序员对内存的管理。Java语言的内存自动回收称为垃圾回收(Garbage Collection)机制,简称GC。垃圾回收机制是指JVM用于释放那些不再使用的对象转载 2012-12-03 09:59:05 · 763 阅读 · 0 评论 -
看Java中对象引用如何严重影响垃圾收集器(1)
如果您认为 Java 游戏开发人员是 Java 编程世界的一级方程式赛车手,那么您就会明白为什么他们会如此地重视程序的性能。游戏开发人员几乎每天都要面对的性能问题,往往超过了一般程序员考虑问题的范围。哪里可以找到这些特殊的开发人员呢?Java 游戏社区就是一个好去处。虽然在这个站点可能没有很多关于服务器端的应用,但是我们依然可以从中受益,看看这些“惜比特如金”的游戏开发人员每天所面对的,我们往往能转载 2012-12-02 23:23:53 · 569 阅读 · 0 评论 -
Java垃圾收集器使用小诀窍
Java垃圾收集器使用小诀窍,垃圾收集器(Garbage Collector,GC)是现代软件虚拟机技术的重要组成部分,其设计方案对运行于虚拟机上的应用程序性能影响极大。Java 虚拟机(JVM)与.net framework都提供了这一功能。下面我们简单介绍一下Java虚拟机中的垃圾收集器原理。Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。对于程序员来说,分配转载 2012-12-02 23:14:46 · 563 阅读 · 1 评论 -
Java socket通信基本原理介绍(一)
Java socket通信基本原理介绍Java socket通信在Java语言中是一个使用很广泛的工具,所谓Java socket通信通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。[了解详细]Socket入门篇浅谈JAVA中如转载 2012-12-02 22:52:56 · 3242 阅读 · 0 评论 -
desktop file entry detal
KeyDescriptionValue TypeREQ?TypeTypeThis specification defines 3 types of desktop entries: Application (type 1), Link (type 2) and Directory (type 3). To allow the addition of new转载 2012-11-27 12:10:14 · 828 阅读 · 0 评论 -
Java对象的4种引用类型(转)
学了这么久的Java,才知道Java的对象引用类型有4种。所以,赶紧把不知道的东西补上! 对于需要长期运行的应用程序来说,如果无用的对象所占用的内存空间不能得到即时的释放的话,那么在一个局部的时间段内便形成了事实上的内存泄露。 以前我们学过,如果要及时地释放内存,最稳妥的方法就是使用完对象之后,立刻执行"object=null"语句。当然,这也是一种理想状态。转载 2012-09-17 13:50:23 · 369 阅读 · 0 评论 -
ant 的 javac标签 (归纳)
原文出处:http://xo-tobacoo.iteye.com/blog/185019任务和javac命令是相似,它编译两种类型的java文件1)没有被编译的java文件2)曾经编译过,但是class文件版本和当前对应的java文件版本不匹配的java文件。 1)javac命令支持的参数: Attributes Description srcdir :必须的转载 2012-07-16 21:51:45 · 1670 阅读 · 0 评论 -
浅谈JAVA中如何利用socket进行网络编程(二)
Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上的数据的传递。在java中,有专门的socket类来处理用户的请求和响应。利用SOCKET类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在JAVA中如何利用socket进行网络编程。在上一篇中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码。转载 2012-12-03 21:38:13 · 411 阅读 · 0 评论 -
Java Executors(线程池)
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。转载 2012-12-03 23:07:01 · 526 阅读 · 0 评论 -
java 集合线程安全
Java 理论与实践: 并发集合类ConcurrentHashMap 和 CopyOnWriteArrayList 提供线程安全性和已改进的可伸缩性DougLea的 util.concurrent 包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型 List 和 Map 的高性能的、线程安全的实现。在本月的 Java理论与实践中,BrianGoetz向您展示了转载 2012-12-03 12:43:03 · 1316 阅读 · 0 评论 -
监听者模式(Listener-Event)---hibernate - 设计模式
http://wuquanyin1011.iteye.com/admin/blogs/628993这篇文章(tomcat中容器周期的通知,也是采用了监听者的模式)。以session.save(object)为例//追踪到这一步(SessionImpl下)public void save(String entityName, Object object, Serializable转载 2012-12-03 10:54:19 · 1228 阅读 · 0 评论 -
java并发库之Executors常用的创建ExecutorService的几个方法说明
一、线程池的创建我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler);创建一个线程池需要输入几个参数:corePoolSize(线程池的基转载 2012-12-03 23:15:55 · 710 阅读 · 0 评论 -
线程池newFixedThreadPool的使用
import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;/*** 线程池newFixedThreadPool的使用。*/public class Execu转载 2012-12-03 22:53:33 · 4015 阅读 · 0 评论 -
Java Socket编程中对于run的使用方法介绍
Java Socket编程在很多地方都有使用,其中有不少的问题需要我们注意,下面我们就来看下run的使用方法,希望大家有所收获。Java Socket编程在使用的时候有很多语句需要我们注意,其中run方法就是我们需要掌握的。下面我们就看看在Java编程中run语句的使用方法。希望大家有所帮助。那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联转载 2012-12-03 22:26:50 · 1300 阅读 · 0 评论