6 One_Java_Programmer

尚未进行身份认证

热爱编程

等级
TA的排名 37w+

hotspot学习(6)

垃圾收集:HotSpot 支持多种不同的垃圾收集算法,比如复制算法、标记-清除、标记-压缩,这些算法旨在满足不同的暂停时间和吞吐量要求。程序员根据自身的程序选择合适的垃圾收集算法。HotSpot垃圾收集器是一个完全准确的收集器,相比之下,有些垃圾收集器是保守的或部分准确的。尽管保守的垃圾收集很有吸引力,因为它很容易添加到没有垃圾收集支持的系统中,但它具有某些缺点。通常,保守的垃圾回收器...

2019-09-28 18:14:09

hotspot学习(5)

对象模型:1、使用无句柄,引用直接保存对象的地址,提高对象的访问速度。gc时,垃圾收集器负责查找和更新适当对象的所有引用。2、对象头占用内存小3、反射创建的对象表示为普通对象,简化了VM内部的对象模型,都使用统一的对象模型,允许被垃圾收集器收集。4、线程支持抢占和多处理器...

2019-09-28 18:06:11

jvm学习(6)

引用计数算法的缺陷代码:/** * -XX:+PrintGC 输出简要GC日志 * -XX:+PrintGCDetails 输出详细GC日志 * -Xloggc:gc.log 输出GC日志到文件 * -XX:+PrintGCTimeStamps 输出GC的时间戳(以JVM启动到当期的总时长的时间戳形式) * -XX:+PrintGCDateStamps 输出GC的时间戳(以...

2019-09-27 23:13:39

jvm学习(5)

直接内存溢出代码:/** * VM Args:-Xmx20M -XX:MaxDirectMemorySize=10M * */public class DirectMemoryOOM { private static final int _1MB = 1024 * 1024; public static void main(String[] args) thr...

2019-09-27 22:38:20

jvm学习(4)

元数据区(Metaspace)溢出代码,用大量的类去填满元数据区:/** * VM Args:-XX:MetaspaceSize=8M -XX:MaxMetaspaceSize=10M * */public class JavaMethodAreaOOM { public static void main(String[] args) { while ...

2019-09-27 22:29:53

jvm学习(3)

常量池内存溢出:/*** VM Args:-XX:PermSize=10M -XX:MaxPermSize=10M*/public class RuntimeConstantPoolOOM { public static void main(String[] args) { // 使用List保持着常量池引用,避免Full GC回收常量池行为 ...

2019-09-26 22:47:42

jvm学习(二)

虚拟机栈oom代码:/*** VM Args:-Xss128k*/public class JavaVMStackSOF { private int stackLength = 1; public void stackLeak() { stackLength++; stackLeak(); } public s...

2019-09-26 22:11:44

jvm学习(一)

总结一下《深入理解java虚拟机》的学习java堆溢出:/** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * */public class HeapOOM { static class OOMObject { } public static void main(String[] ...

2019-09-26 21:48:12

java异常(1)

今天debug项目时遇到一个诡异的异常ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [util.c:840]有人说是debug时太快引起的,然后重新debug就没有报错了。...

2019-08-25 12:22:14

hotspot虚拟机的一些思考(四)分代收集

堆内存主要分为年轻代和老年代,不同年龄的对象放入不同的代,在不同的代使用不同的算法,这样可以针对算法做优化。分代的依据是weak generational hypothesis-----弱代世界假设,大部分对象很快分配,也很快死亡,比如那些在函数中new出来的对象,函数执行完后对象的引用也消失了,对象就变为垃圾;少部分对象会存活不久,比如那些被全局引用的对象。年轻代中死亡的对象比较多,垃圾...

2019-03-13 23:22:48

hotspot虚拟机的一些思考(三)理想的垃圾收集器

理想的垃圾收集器必须是安全的,即准确查找活对象并回收死对象,不会错误回收活对象。垃圾回收器已经明确从root set开始查找活对象,在引用链上的对象是活对象,不在引用链上的对象是死对象。 垃圾收集器不会长时间暂停应用程序,需要权衡堆大小、垃圾收集时间、垃圾收集频率。堆太小,堆很快被填满,垃圾收集时间越快,垃圾收集频率越频繁;堆太大,垃圾收集时间越慢,垃圾收集频率越低。 垃圾收集器是...

2019-03-12 23:13:44

hotspot虚拟机的一些思考(二)gc

垃圾收集器可以帮助我们自动管理内存,不需要程序员手动释放内存,像c++这样的语言就需要程序员手动调用函数或者使用第三方工具来释放内存。释放内存可以防止内存泄露,否则随着程序的运行内存会越来越少。 使用垃圾收集器会带来性能开销,jvm也会帮我们动态调整垃圾收集器。当垃圾收集器成为我们程序性能的瓶颈时,也需要我们手动调整它。...

2019-03-11 23:33:29

hotspot虚拟机的一些思考(一)简介

   实现jvm规范,编写jvm实现的那些人都是大牛。记录一下平时学习hotspot过程中的一些思考,没有看过hotspot源码,仅仅根据看文档来记录一下自己的思考。     除了hotspot,应该还有其他jvm规范的实现,oracle主要有两个jvm实现,分别是HotSpot JVM和JRockit JVM,JRockit JVM的文档比较少,以后有时间再了解,oracle以后可能会将这些...

2019-01-19 13:11:46

函数篇

sql语句常用函数总结:函数意义sum(列)求该列的总和avg(列)求该列的平均值max(列)求该列的最大值min(列)求该列的最小值count(列) 求该列的行数(NULL除外) count(*)求该列的行数

2016-05-31 11:33:38

函数篇

count(列名),count(*)都是用来统计行数,但是count(列名)是不统计列的值是NULL的列的,count(*)是统计所有的。

2016-05-31 10:28:19
勋章 我的勋章
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。