JVM
文章平均质量分 74
「已注销」
这个作者很懒,什么都没留下…
展开
-
深入探讨 Java 类加载器
http://www.ibm.com/developerworks/cn/java/j-lo-classloader/简介: 类加载器(class loader)是 Java™中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的转载 2012-10-23 22:13:20 · 559 阅读 · 0 评论 -
了解CMS(Concurrent Mark-Sweep)垃圾回收器
1.总体介绍:CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC ,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。2.CMS过程:初始标记(STW initial m转载 2014-11-25 23:30:27 · 662 阅读 · 0 评论 -
JVM系列三:JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同转载 2014-11-25 22:47:56 · 705 阅读 · 0 评论 -
DirectBuffer及内存泄漏
创建Buffer对象时,可以选择从JVM堆中分配内存,也可以OS本地内存中分配,由于本地缓冲区避免了缓冲区复制,在性能上相对堆缓冲区有一定优势,但同时也存在一些弊端。两种缓冲区对应的API如下:JVM堆缓冲区:ByteBuffer.allocate(size)本地缓冲区:ByteBuffer.allocateDirect(size)从堆中分配的缓冲区为普通的Java对象,生命周期与转载 2014-11-27 13:38:50 · 927 阅读 · 0 评论 -
How to Tune Java Garbage Collection
Come from : http://www.cubrid.org/blog/dev-platform/how-to-tune-java-garbage-collection/This is the third article in the series of "Become a Java GC Expert". In the first issue Understanding转载 2014-11-26 18:03:39 · 909 阅读 · 0 评论 -
Understanding Java Garbage Collection
come from: http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/What are the benefits of knowing how garbage collection (GC) works in Java? Satisfying the intellectual cur转载 2014-11-26 18:06:25 · 841 阅读 · 0 评论 -
How to Monitor Java Garbage Collection
Come from: http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/This is the second article in the series of "Become a Java GC Expert". In the first issue Understanding转载 2014-11-26 18:05:09 · 831 阅读 · 0 评论 -
ThreadLocal的用法
yongyong是解决线程安全问题一个很好的思路,ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,由于Key值不可重复,每一个“线程对象”对应线程的“变量副本”,而到达了线程安全。我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一转载 2014-09-01 19:28:12 · 578 阅读 · 0 评论 -
Java直接内存读写的例子
在Hotspot JVM上,我们能够直接对内存进行读写操作。该类的allocateMemory方法用于申请分配内存,putAddress和getAddress方法用于对直接内存进行读写。 本文将通过sun.misc.Unsafe给出一个直接读写内存的例子。 注意:这只是一个例子,只是用来验证通过sun.misc.Unsafe来实现直接读写内存的可能性。但是,这样做并没有安全保证,而转载 2014-08-31 22:02:42 · 7052 阅读 · 0 评论 -
java-String中的 intern()
1. 首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;3. String str=”kvill”;String str转载 2014-08-31 21:57:42 · 762 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2014-08-31 21:36:43 · 577 阅读 · 0 评论 -
利用 Java dump 进行 JVM 故障诊断
引言对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的运行状态并将其存储在转储(dump)文件中,从而为我们分析和诊断问题提供了重要的依据。常见的转储文件包括 Java Dump, Heap dump 和 System dump。转载 2014-07-25 18:51:11 · 993 阅读 · 0 评论 -
线程类加载器
线程上下文类加载器线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 java.lang.Thread中的方法getContextClassLoader()和 setContextClassLoader(ClassLoader cl)用来获取和设置线程的上下文类加载器。如果没有通过 setContextClassLoader(ClassL原创 2013-07-16 16:13:21 · 1179 阅读 · 0 评论 -
【java】LinkageError之loader (instance of xxx) previously initiated loading for a different type
LinkageError包括其子类,是Java中比较不应该出现的Error。出现这些问题,大概有几个问题:ClassLoader没有严格遵守Java中默认的双亲委派模式;全限定名相同的两个类在不同的CL中有重复;程序运行时使用的类的版本与开发时候不一样(类有变化,比如改了方法的可见性等)。而LinkageError本身则更少见。当遇到LinkageError loader (instanc转载 2013-06-20 21:11:51 · 1471 阅读 · 0 评论 -
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
前言在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,转载 2012-11-13 18:53:39 · 755 阅读 · 0 评论 -
jvm调优总结
JVM常用参数JAVA_OPTS="-verbose:gc -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -XX:+PrintTenuringDistributi转载 2012-11-13 17:37:52 · 625 阅读 · 0 评论 -
How to Load a Java Native/Dynamic Library (DLL)
There are several ways to make it possible for the Java runtime to find and load a dynamic library (DLL) at runtime. I will list them briefly here, followed by examples and further explanation below.转载 2012-11-12 23:14:09 · 1274 阅读 · 0 评论 -
Java HotSpot VM Options
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.htmlPlease note that this page only applies to JDK 7 and earlier releases. For JDK 8 please see the Windows, Solaris, Li转载 2014-12-14 17:13:28 · 3162 阅读 · 0 评论