
java虚拟机
yuan_qh
不定期分享一些学习心得,欢迎大家关注
展开
-
java中的内存模型
根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。其中,程序计数器,虚拟机栈,本地方法栈为线程私有的,而方法取和堆却是所有线程共享的。1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以...原创 2019-08-31 19:59:48 · 200 阅读 · 0 评论 -
不同JDK版本之间的intern()方法的区别-JDK6 VS JDK6+
String s = new Stirng(“a”);s.intern();JDK6:当调用intern()方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串对象添加到字符串常量池中,并且返回该字符串的引用。JDK6+:当调用intern()方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,如果该字符串对...原创 2019-08-31 21:13:49 · 349 阅读 · 0 评论 -
JVM 三大性能调优参数-Xms -Xmx -Xss
-Xss:规定了每个线程虚拟机栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。-Xms:初始的Heap堆的大小。-Xmx:最大Heap堆的大小。在很多情况下,-Xms不和-Xmx设置成一样的。如果这么设置,当Heap不够用时,会发生内存抖动,影响程序运行稳定性。...原创 2019-08-31 21:40:43 · 306 阅读 · 0 评论 -
java垃圾回收
1、对象被判定为垃圾的标准:在程序中不再被引用的对象,我们就认为这个对象已经成为了垃圾。2、标记垃圾的算法判断对象是否为垃圾一般有两种方式:引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以把此对象当做垃圾回收。此方法简单,无法解决对象相互循环引用的问题。可达性分析(Reachability Analysis):从GC Roots开...原创 2019-09-01 20:01:18 · 280 阅读 · 0 评论 -
jvm中的常量池到底在哪里?
首先放上一张图片:首先通过上图明白,java的runtime data area中分为栈,本地方法栈,程序计数器,堆,方法区所以说堆内存和方法区不是在一起的,网上很多博客这一点都没有分清楚。详细分析可以看我的另一篇文章:堆内存,方发区,分清楚了吗?其次,方法区和永久代的关系很像Java中接口和类的关系,类实现了接口,而永久代就是HotSpot虚拟机对虚拟机规范中方法区的一种实现方式...原创 2019-09-15 12:53:50 · 14397 阅读 · 5 评论 -
jvm内存,堆内存,方发区,你分清楚了吗?
JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。先看下JAVA堆内存是如何划分的(jdk1.8之前),如图:JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generati...转载 2019-09-15 12:57:08 · 1212 阅读 · 3 评论 -
对象和数组都是在堆内存上分配吗???
JVM内存分配策略关于JVM的内存结构及内存分配方式,不是本文的重点,这里只做简单回顾。以下是我们知道的一些常识:1、根据Java虚拟机规范,Java虚拟机所管理的内存包括方法区、虚拟机栈、本地方法栈、堆、程序计数器等。2、我们通常认为JVM中运行时数据存储包括堆和栈。这里所提到的栈其实指的是虚拟机栈,或者说是虚拟栈中的局部变量表。3、栈中存放一些基本类型的变量数据(int/sho...转载 2019-09-24 09:50:43 · 2644 阅读 · 0 评论