平静

遵循美德行事,纵使没有增加快乐,也可减轻焦虑。

导航

随笔分类 -  00-JVM

摘要:Java里面每个线程都有独立的、固定大小的栈空间, Java在解释执行的时候采用的是栈式的架构。 方法调用、方法内的局部变量都是在栈空间申请的。 空间的大小依赖于JDK版本,JDK1.6应该是512K,超过了这个空间就会产生StackOverFlow。 不断的递归会使栈空间不断增大 导致 溢出。 阅读全文

posted @ 2016-11-25 11:04 mdong 阅读(206) 评论(0) 推荐(0)

摘要:堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用 阅读全文

posted @ 2016-11-25 10:13 mdong 阅读(11192) 评论(0) 推荐(0)

摘要:对于 Parallel Scavenge + Parallel Old - 新生代:PSYoungGen - 老年代:ParOldGen - 永久代:PSPermGen 后面方括号内部的 “3324K->152K(3712K)” 含义是 回收: 前->后 (总) “GC前该内存区域已使用容量->GC 阅读全文

posted @ 2016-11-16 19:35 mdong 阅读(667) 评论(0) 推荐(0)

摘要:cat xx.xml|grep GC <jvm-arg>-XX:+PrintGCDetails</jvm-arg> <jvm-arg>-XX:+PrintGCDateStamps</jvm-arg> <jvm-arg>-XX:+PrintGCApplicationConcurrentTime</jv 阅读全文

posted @ 2016-11-16 16:06 mdong 阅读(598) 评论(0) 推荐(0)

摘要:注意 application threads 并行/吞吐量回收器( Parallel collector) JVM的Server模式的默认回收器。正如它的名字所说的那样,它的最大的优点就是它使用多个线程来扫描及压缩堆。 它的缺点就是不管执行的是minor GC 还是 full GC它都会暂停 应用线 阅读全文

posted @ 2016-11-16 14:23 mdong 阅读(137) 评论(0) 推荐(0)

摘要:87%的案例没有指定垃圾收集器 有2个不同的原因导致了该情况的出现: JVM对于默认情况的处理十分合理,开发人员无需指定垃圾收集器对部分团队来说,程序性能可能优先级不高,致使没有指定垃圾收集器 话又说回来,默认的垃圾收集器又是什么呢?这个问题既简单又复杂。 如果你运行在JVM的客户端模式(Clien 阅读全文

posted @ 2016-11-16 14:14 mdong 阅读(224) 评论(0) 推荐(0)

摘要:java线程同步的原理java会为每个Object对象分配一个monitor, 当某个对象(实例)的同步方法(synchronized methods)被多个线程调用时,该对象的monitor将负责处理这些访问的并发独占要求。任何时刻,对一个指定object对象(实例)的某同步方法只能由一个线程来调 阅读全文

posted @ 2016-11-11 14:06 mdong 阅读(671) 评论(0) 推荐(0)

摘要:1,设置JAVA_HOME: java的目录一、为了方便引用,比如,你JDK安装在C:\ProgramFiles\Java\jdk1.7.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串; 二、归一 阅读全文

posted @ 2016-11-03 18:46 mdong 阅读(4202) 评论(0) 推荐(0)

摘要:变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 变量名:CLASSP 阅读全文

posted @ 2016-11-03 18:38 mdong 阅读(914) 评论(0) 推荐(0)

摘要:在 resin启动时指定java时加上了 -d64选项 JAVA="/xx/java -d64" 选择 "-server"选项必须使用-d64 http://blog.csdn.net/senvil/article/details/48894393 阅读全文

posted @ 2016-11-03 18:04 mdong 阅读(306) 评论(0) 推荐(0)

摘要:ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。 1.1 几个相关概念 ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流等),通过Cl 阅读全文

posted @ 2016-10-12 13:37 mdong 阅读(159) 评论(0) 推荐(0)

摘要:Java.lang软件包是java语言的核心部分,它提供了java中的基础类。java.lang.Object,这是java.lang的根类,也是所有java类的超类。在构造java类的实例时,都先调用Object中的默认构造方法。 类java.lang.Class<T>也是一个非常重要的类。Cla 阅读全文

posted @ 2016-10-10 16:35 mdong 阅读(854) 评论(0) 推荐(0)

摘要:java.exe 控制台/dos窗口 javaw.exe 非控制台 javac是用来编译 .java文件 的 使用简单的 java 命令 运行 一个 .class文件 javap是JDK自带的 反汇编 器,可以查看 java编译器 为我们生成的 字节码 。通过它,我们可以对照源代码和字节码,从而了解 阅读全文

posted @ 2016-10-10 14:49 mdong 阅读(312) 评论(0) 推荐(0)

摘要:1. dump heap: 如果Java应用程序出现了内存泄露,千万别着急着把应用杀掉,而是要保存现场。如果是互联网应用,可以把流量切到其他服务器。保存现场的目的就是为了把 运行中JVM的heap dump下来。 JDK自带的jmap工具,可以做这件事情。它的执行方法是:jmap -dump:for 阅读全文

posted @ 2016-09-29 14:38 mdong 阅读(305) 评论(0) 推荐(0)

摘要:1. jvm参数Xms与Xmx保持一致。 2. 为减少full gc次数,适当增大堆大小(+512M)。 阅读全文

posted @ 2016-09-20 16:37 mdong 阅读(112) 评论(0) 推荐(0)

摘要:前 -> 后 (总) 2016-09-19T12:17:55.390+0800: 967539.277: [Full GC [PSYoungGen: 9635K->0K(133632K)] [ParOldGen: 168910K->101246K(175104K)] 178546K->101246K 阅读全文

posted @ 2016-09-19 14:24 mdong 阅读(754) 评论(0) 推荐(0)

摘要:Class.forName() Class.forName(xxx.xx.xx)要求JVM查找并加载指定的类,作用是 执行该类的静态代码段 一.什么时候用Class.forName()? 例:analyzer = (Analyzer) Class.forName(analyzerClass).new 阅读全文

posted @ 2016-09-18 10:03 mdong 阅读(287) 评论(0) 推荐(0)

摘要:方法区:用来存放已经加载的 常量、静态变量 的内存区域。 加载: 把类的信息加载到jvm的方法区中,然后在堆区中实例化一个java.lang.Class对象,作为方法区中这个类的信息的入口 连接: 验证,准备,解析(符号引用->直接引用) 初始化: http://blog.csdn.net/zhen 阅读全文

posted @ 2016-09-09 15:01 mdong 阅读(186) 评论(0) 推荐(0)