`
文章列表
转载地址:http://www.mcxb.com/sysProgram/Java/JavaSJ/58029.html   没看懂,以后再看:      转载地址:http://www.mcxb.com/sysProgram/Java/JavaSJ/58029.html   没看懂,以后再看:       今天,我把以前做Java Optimize的时候IBM送给我的一个光盘从新看了一下。   发了一篇 对IBM java 1.3.0 for as400的JVM 的详细介绍。这篇文章的作者是Sam Borman,他是 IBM Java的管理团队成员,专门负责GC模块。另外一个作者是Richard ...
1.当java程序运行到一定时间的时候。常常抛出java.lang.OutOfMemoryError: Java heap space异常。 2.java heap space 指的是JVM的内存不够用了,内存泄露。    原因: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启 ...
文章摘要:默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。 java -Xms64m -Xmx256m Test -Xms是设置内存初始化的大小 -Xmx是设置最大能够   默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。java -Xms64 ...
Java技术与Java虚拟机   说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示: 图1 Java四个方面的关系    运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件)。最后字节码被装入内存,一旦 字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。从上图也可以看出Java平台由Java虚拟机和Java 应用程序接口 ...
转自:http://spaces.msn.com/songsun/   先说tuning,gc有两个指标,一个是frequentcy(以下称F),一个是duration(以下称D)。 前者和程序产生garbage的速率和java heap大小有关,后者和java heap大小及gc thread数有关。依据应用程序的差异,F可能为30 ...
转自:http://spaces.msn.com/songsun/   以下继续探讨,说说jvm的线程(thread)及其执行中和内存相关的问题。but今天是写不完了,请保持关注,先写个预告栏咯 记得当年学java之初,总是很鄙夷它,因为那时候对c/c++很痴迷,结果呢,第一个多线程程序还是拿java写出来的。而线程(thread),本是 操作系统的所提供/支持的,所以当初有一段时间,我总在怀疑我那java程序创建的线程到底是不是真正的操作系统线程,现在看来很可笑。 题外,再继续质疑一下: 在有些平台上,比如Linux或者大 部分的unix,只有进程而没有线程的概念的,但这些平台上,进 ...
上篇说到了关于java heap的一些特征:连续的内存区域,逐步扩张的特征和如何做的这点的。but在讨论JVM的堆内存的细节以及垃圾回收等事宜之前,我们先讨论一下java进程的内存结构。 郁闷, 昨日 这一篇本来写完了,但是提交 ...
本文出处:http://songsun.spaces.live.com/blog/cns!2DB8261011445D70!211.entry     近期看了一些有关JVM和内存的资料, 为了避免遗忘,特在这里作一笔记。今天说说操作系统的虚拟内存先。 虚拟内存管理(VMM)是现在操作系统广泛采用的内存管理方式,为什么出现VMM了呢,当初主要是为了解决物理内存不足的问题,既然是不足,设计师们当然 就想起来用硬盘空间来协力,使用诸如LRU(最近最少使用)之类的算法,把物理内存(Main memory)中不怎么使用的内容,转储到硬盘上以节省空间(给急需内存的程序使用),而转储到硬盘上的内容又被访 ...
本文转自:  http://spaces.msn.com/songsun/   不同的JVM实现对堆结构的设计有所不同,这里先说说共性的,然后再比较classic  vm和hotspot  vm在gc方面的差异。 先 大致说说gc的过程,通常有两种情形会导致gc发生,一种是显式的System.gc()调用而java进程未禁止显示gc,第二种是隐式的,即内存管理 器(MM)在alloc内存时发生failure,MM进而作gc以便释放出空间用于分配(当然,假如gc后还是没有空间可满足分配数值,  OutOfMemory就发生了)。gc过程分3步走,第1步,mark阶段,标示出allocbits和 ...
 为什么使用volatile比同步代价更低?   同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能.   而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.  volatile原理是什么?  volat ...
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:         bootstrap classloader                  |         extension classloader                  |         system classloader bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspath选项或使用 -D选项指定sun.boot.class.pat ...
Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。在Java类库中, IO 部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍。   流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图:
7.3  线程间通信 迄今为止,我们所掌握的线程间通信手段还只限于主线程通过唤醒、中断机制向子线程发出信号,或者通过在创建子线程时向构造方法传入数据,以及设置子线程的公有属性值。在千变万化的应用需求面前,仅凭这些手段是难以胜任要求的。 在多线程开发领域,线程与线程之间经常需要交换信息,这是一种普遍存在的需求,并不仅限于主线程与子线程之间,子线程与子线程之间也很可能需要交换信息。 线程之间能够方便地基于共享地址空间实现通信,这本身便是多线程应用程序的一大优势,因为进程之间是不能互访对方的地址空间的,在进程之间传递信息只能采用类似于远程调用的手段。 本节介绍利用Java输入输出API中的内部管道( ...

java io原理

    博客分类:
  • java
  Java的IO系统工作原理 来源:JAVA天堂  J2SE  2007-7-1 23:21:01   1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型:1.1 以字节为导向的stream以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型:1. input stream1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用2) Strin ...
Java程序类加载完全揭密 2005-10-19 15:34作者:purplerain编译出处:matrix责任编辑:方舟   版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明  类加载是java语言提供的最强大的机制之一。尽管类加载并不是讨论的热点话题,但所有的编程人员都应该了解其工作机制,明白如何做才能让其满足我们的需要。这能有效节省我们的编码时间,从不断调试ClassNotFoundException, ClassCastException的工作中解脱出来。   这篇文章从基础讲起,比如代码与数据的不同之处是什么,他们是如何构成一个实例或对象的。 ...
Global site tag (gtag.js) - Google Analytics