自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 hotspot学习(6)

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

2019-09-28 18:38:56 206 2

原创 hotspot学习(5)

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

2019-09-28 18:08:00 175 2

原创 jvm学习(6)

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

2019-09-27 23:16:05 121 1

原创 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:56 113 1

原创 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:31:52 109

原创 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:59:29 83

原创 jvm学习(二)

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

2019-09-26 22:14:30 89

原创 jvm学习(一)

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

2019-09-26 22:03:15 96

原创 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 118

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

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

2019-03-13 23:22:48 224

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

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

2019-03-12 23:13:44 110

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

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

2019-03-11 23:33:29 120

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

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

2019-01-19 13:11:46 727

原创 函数篇

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

2016-05-31 11:33:38 212

原创 函数篇

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

2016-05-31 10:28:19 223

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除