特点: 优点:算法简单 缺点:标记-清除最大的问题会造成内存碎片,但是不浪费空间,效率较高(如果对象较多时,逐一删除效率也会受到影响)
特点:
先将可用内存分为大小相同两块区域A和B,每次只用其中一块,比如A。当A用完后,则将A中存活的对 象复制到B。复制到B的时候连续的使用内存,最后将A一次性清除干净。
特点
对于大多数垃圾回收算法而言,GC线程工作时,停止所有工作的线程,称为Stop The World。GC 完成 时,恢复其他工作线程运行
Heap堆内存分为
永久代:JDK1.7之前使用, 即Method Area方法区,保存JVM自身的类和方法,存储JAVA运行时的环境信息, JDK1.8后 改名为 MetaSpace,此空间不存在垃圾回收,关闭JVM会释放此区域内存,此空间物理上不属于 heap内存,但逻辑上存在于heap内存永久代必须指定大小限制,字符串常量JDK1.7存放在永久代,1.8后存放在heap中 MetaSpace 可以设置,也可不设置,无上限
规律: 一般情况99%的对象都是临时对象
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
选项分类
java -Xms1024m -Xmx1024m -jar xxxx.jar
JProfiler是一款功能强大的Java开发分析工具,它可以快速的帮助用户分析出存在的错误,软件还可对需 要的显示类进行标记,包括了内存的分配情况和信息的视图等
https://www.ej-technologies.com/products/jprofiler/overview.html
默认不指定,-Xmx大约使用了1/4的内存,当前本机内存指定约为1G 在bin/catalina.sh中增加一行
......
# OS specific support. $var _must_ be set to either true or false.
#添加下面一行
JAVA_OPTS="-server -Xms128m -Xmx512m -XX:NewSize=48m -XX:MaxNewSize=200m"
cygwin=false
darwin=false
........
-server:VM运行在server模式,为在服务器端最大化程序运行速度而优化
-client:VM运行在Client模式,为客户端环境减少启动时间而优化
java8 年轻代 和 老年代 分别是不同的垃圾回收器
强调用户交互 ParNew + CMS
强调吞吐量 Parallel Scavenge + Parallel Old
java11起, 不在区分, 默认G1 垃圾回收器