• Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

    java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。 导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 代码中存在死循环或循环产生过多重复的对象...
    作者:孤风一剑/2016年4月14日/分类:Java开发/阅读:709次/标签:, /评论关闭
  • jvm内存简单模型

    先看一下jvm运行时的内存结构图:  直接内存:     直接内存并不是jvm运行时数据区的一部分,所建议它不受jvm内存总大小的限制。个人理解直接内存就是物理机可用的内存空间。 程序计数器:     程序计数器是每一个线程所独有的一个很小的内存区域,并不是多线程所共享的共享区域。它可以被看成是字节码指令执行的指针,线程的分支,循环,跳转,异常处理,线程恢复等功能都...
    作者:孤风一剑/2016年1月27日/分类:Java开发/阅读:713次/标签:, /评论关闭
  • String放入运行时常量池的时机与String.intern()方法解惑

    运行时常量池概述 Java运行时常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近于Java语言层面的常量概念,如文本字符串、声明为final的常量值等。 而符号引用则属于编译原理方面的概念,包括了下面三类常量: - 类和接口的全限定名(包名+类名) - 字段的名称和描述符 - 方法的名称和描述符 运行时常量池位置 运行时常量池在JDK1.6及之前版本的JVM中是方法区...
    作者:孤风一剑/2016年1月05日/分类:Java开发/阅读:606次/标签:, /评论关闭
  • JVM 自带线程

    一个JVM 启动之后,自己会启动一些线程。我们在jstack的时候可以排除掉这些。只关注我们自己业务产生的线程 代码 Java代码 package com.cases;      import java.lang.management.GarbageCollectorMXBean;   import java.lang.management.ManagementFactory;   import java.lang.management.MemoryMXBean;   import java.util.List;   import java.util.Map;      publi...
    作者:孤风一剑/2015年12月31日/分类:Java开发/阅读:714次/标签:/评论关闭
  • JVM 自带线程

    一个JVM 启动之后,自己会启动一些线程。我们在jstack的时候可以排除掉这些。只关注我们自己业务产生的线程 代码 Java代码 package com.cases;      import java.lang.management.GarbageCollectorMXBean;   import java.lang.management.ManagementFactory;   import java.lang.management.MemoryMXBean;   import java.util.List;   import java.util.Map;      publi...
    作者:孤风一剑/2015年12月31日/分类:Java开发/阅读:600次/标签:/评论关闭
  • 使用java jconsole监控websphere JVM

    1,加入以下jvm参数:-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote2、修改/usr/IBM/WebSphere/AppServer/java/jre/lib/management下的management.properties文件,在最后加入com.sun.management.jmxremote.port=8999com.sun.management.jmxremote.authenticate=false  com.sun.management.jmxremote.ssl=false3、设置jconsole远程登录的用户名和密码...
    作者:孤风一剑/2015年12月03日/分类:Java开发/阅读:1,151次/标签:, , , /评论关闭
  • JVM调优总结(二)–一些概念

    Java对象的大小     基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。     在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句: Object ob = new Object();     这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Java...
    作者:孤风一剑/2015年10月15日/分类:Java开发/阅读:457次/标签:, , , , , , /评论关闭
  • JVM调优总结(一)– 一些概念

    数据类型     Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress 引用类型包括:类类型,接口类型...
    作者:孤风一剑/2015年10月15日/分类:Java开发/阅读:450次/标签:, , /评论关闭
  • JVM性能调优

     最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。 一、JVM内存模型及垃圾收集算法  1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm)   其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize...
    作者:孤风一剑/2015年10月15日/分类:Java开发/阅读:540次/标签:, , , , , /评论关闭
  • JVM 优化问题-java面试题

    jvm 优化问题 JVM堆内存分为2块:Permanent Space 和 Heap Space。     Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Young Generation)。年老代和年轻代的划分对垃圾收集影响比较大。 我们知道Java和C+...
    作者:孤风一剑/2015年9月01日/分类:Java开发/阅读:642次/标签:, , , /评论关闭