![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
_萝卜_
一点点的努力
展开
-
Map之ConcurrentHashMap
java concurrenthashmap翻译 2017-09-02 13:33:37 · 221 阅读 · 0 评论 -
jvm之内存分配与回收策略
下面是使用Serial/SerialOld收集器下(ParNew/SerialOld收集器组合的规则也基本一致)的内存分配和回收的策略对象优先在Eden分配1、大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次MinorGC。2、执行GC后,将存活的对象分配到Survivor空间3、无法放到Survivor空间的对象,分配到老...翻译 2019-06-05 11:45:32 · 120 阅读 · 0 评论 -
jvm之对象的创建
Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且...翻译 2019-06-05 11:46:07 · 139 阅读 · 0 评论 -
jvm之参数查询列表
堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、ToSurvivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆的内...翻译 2019-06-05 11:45:47 · 384 阅读 · 0 评论 -
jvm之垃圾回收器
Serial收集器:1、是一个单线程的收集器,“StopTheWorld”2、对于运行在Client模式下的虚拟机来说是一个很好的选择4、简单而高效SerialOld收集器1、Serial收集器的老年代版本,它同样是一个单线程收集器,使用“标记-整理”算法。2、主要意义也是在于给Client模式下的虚拟机使用。3、如果在Server模式下,那么它主要还有两大用...翻译 2019-06-05 11:45:54 · 164 阅读 · 0 评论 -
jvm之垃圾收集算法
标记-清除算法(Mark-Sweep)1、标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象2、在标记完成后统一回收所有被标记的对象缺点:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一翻译 2017-09-02 18:22:02 · 173 阅读 · 0 评论 -
jvm之OutOfMemoryError异常与实战
StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度OutOfMemoryError:虚拟机栈可以动态扩展(当前大部分的Java虚拟机都可动态扩展,只不过Java虚拟机规范中也允许固定长度的虚拟机 栈),如果扩展时无法申请到足够的内存OutOfMemor翻译 2017-09-02 18:19:57 · 311 阅读 · 0 评论 -
jvm之对象的访问定位
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。如果使用句柄访问的话,那么Java堆中将会划分出一块...转载 2017-09-02 18:17:32 · 193 阅读 · 0 评论 -
jvm之对象的内存布局
在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(InstanceData)和对齐填充(Padding)。HotSpot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机(未开启原创 2017-09-02 18:16:26 · 194 阅读 · 0 评论 -
jvm之对象的创建
Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且...转载 2017-09-02 18:14:16 · 177 阅读 · 0 评论 -
jvm之JVM内存划分
2.2.1 程序计数器程序计数器(ProgramCounterRegister)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础...转载 2017-09-02 18:09:43 · 252 阅读 · 0 评论 -
jvm之eclipse设置jvm
设置参数:-Xverify:none -Xms512m -Xmx512m -Xmn128m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xnoclassgc -XX:CMSInitiatingOccupancyFraction=85参数解释:-Xverify翻译 2017-09-02 18:08:09 · 291 阅读 · 0 评论 -
一个例子学会CountDownLatch
CountDownLatch原创 2017-09-02 16:08:17 · 199 阅读 · 0 评论 -
java中线程安全单例模式
java安全单例模式原创 2017-09-02 15:31:00 · 255 阅读 · 0 评论 -
Phoenix的安装、升级版本、以及使用,以及所遇到的问题
phoenix的安装 phoenix的编译 phoenix的使用 phoenix的问题 phoenix的使用 phoenix的全解, phoenix的吐血的详细原创 2017-12-11 14:35:55 · 3765 阅读 · 0 评论