`
laintoday
  • 浏览: 64268 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

java常见知识点收集

    博客分类:
  • Java
 
阅读更多

1  java 的参数传递方式 : 都是值传递,没有指针传递或地址传递
   都是传递的值副本
   基本类型是直接传值的副本,
   对象是传递的对象引用值的副本  
Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。
    如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值.
    如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的 值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。
( 对象包括对象引用即地址和对象的内容)

a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同 的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存 地址)。
b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口

2 Object obj = new Object();
  占空间的大小是4byte(栈引用大小)+8byte(最小堆大小,记录对象的元数据)=12byte
  java 在堆中分配对象时总是以8的整倍来分配空间
  class obj {
    int a;
    boolean b;
    Object o;
  }
  obj o =new obj();  占空间大小4(栈引用)+4(int类型大小)+1(boolean大小)+8(空对象大小)=17
  大小17 离8的倍数最接近的是24 所有总共大小为24字节

3  内存模型 :
   程序计数器
   栈:线程栈 本地方法栈
   堆:划分三个年代:  年轻代Young Generation(一个eden区(对象在这生成),两个生存区(survivor),用于对象多次筛选,复制,减少放到年老代的可能)
    年老代Old Generation: tenured  N次垃圾回收后扔存活的对象,生命周期较长的对象
    持久代Permanent Generation: 用于存放静态文件,如java类,方法 持久代大小通过-XX:MaxPermSize=<N>进行设置

4  分代的垃圾回收策略,是基于这样一个事实 :不同的对象的生命周期是不一样的。因此,不同生命周期的对
象可以采取不同的收集方式,以便提高回收效率。

5  垃圾回收触发的条件 : 1 程序空闲时  2 堆空间不足时
   回收的两种类型:Scavenge GC和Full GC
   Scavenge GC清除式回收:  主要用于eden区回收,回收频率多,效率高
   Full GC 对整个堆进行回收(young,tenured,permanent) 应减少这个次数
   full Gc触发条件:· 年老代(Tenured)被写满
                   · 持久代(Perm)被写满
                   · System.gc()被显示调用
 
6  参数设置:
  内存设置参数
   -Xmx2040m : java堆最大可用内存
   -Xms2040  : java堆初始化内存值
   -Xss1024k : 每个线程栈大小,jdk5.0以后默认1M
   -Xmn2g    : 设置 年轻代大小 持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
   -XX:MaxPermSize=16m:设置持久代大小为16m。
   -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
   -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以
这里的选择主要针对并行收集器和并发收集器。默认情况下,JDK5.0以前都是使用串行收集器,如果想使用
他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行判断。

吞吐量优先的并行收集器
java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -
XX:ParallelGCThreads=20
-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配代使用并发收集,而年老代仍旧使用串行收集。
-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃此值最好配置与处理器数目相等。
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -
XX:MaxGCPauseMillis=100
-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。
n java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -
XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy
-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的
Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,
一直打开。

响应时间优先的并发收集器
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC:设置年老代为并发收集。测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。所以,此时年轻代大小最好用-Xmn设置。
-XX:+UseParNewGC: 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -
XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片

分享到:
评论

相关推荐

    java常见面试题,面试专用笔记,非常全面

    这是我收集的《Java 最常见的 ...或许这份面试题还不足以囊括所有 Java 问题,但有了它,我相信足以应对目前市面上绝大部分的 Java 面试了,因为这篇文章不论是从深度还是广度上来讲,都已经囊括了非常多的知识点了。

    常见Java笔试面试题

    收集了常见的笔试题面试题,对应聘者非常有好处。 里面有很多知识点、考点,我们很容易犯错误或者只看到片面的东西,即使对有2,3年开发工作经验的人

    Java面试通关宝典:深度解读核心知识点与实战技巧,全面提升面试表现力与技术实力

    本文将对Java常见面试题进行总结和解析,旨在为准备面试的Java开发者提供全面而深入的学习参考。以下是一些关键的Java面试题目类别及其概述: Java集合框架:这部分问题关注ArrayList、LinkedList、HashMap、HashSet...

    Android核心知识点笔记V2020.03.30.zip

    收集的Android核心知识点笔记,JAVA知识点汇总、Android知识点汇总、Android拓展知识点、Android开源库源码分析、设计模式汇总、Gradle知识点汇总、常见面试算法题汇总。Android

    Java后端面试问题整理.docx

    Java后端面试知识点总结,涉及JVM • 熟悉JVM内存区域,常用引用类型,垃圾回收机制、算法以及常见的GC垃圾收集器(Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1) • 熟悉常用IO模型(BIO、...

    Java开发及面试(个人面试、工作总结、资料收集站).zip

    Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 ...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    interview:Java 面试知识点及总结

    其中包含对以下书籍的知识点摘录:、部分内容由于备战校招期间太忙,没记录笔记子项目内容algorithm 算法练习concurrent 并发笔记design 设计模式笔记experience 收集的常见面试问题http http笔记jvm jvm笔记lambda ...

    基于javatcpsocket通信的拆包和装包源码-java-interview:java基础知识点

    常见的内存溢出 重载和重写的区别 构造器Constructor是否能被override public protected private 自动住装箱和拆箱 Error和Exception 的区别 java中如何实现代理机制 死锁的产生和预防 序列化 和 反序列化 json 和 ...

    Java程序设计习题集下载

    对知识点的总结以及内容的全面性也使得《Java程序设计习题集》具有一定的手册特性,非常适合复习,同时也方便教师出题,使得各章节的试题容易在试卷中分布均匀合理。在本习题集中的编程题和趣味题还有可能采用其他...

    整理后java开发全套达内学习笔记(含练习)

    应该不止这点) command n. 命令,指令 [kә'mɑ:nd](指挥, 控制) (command-line 命令行) Comments [java] 文本注释 ['kɒments] compile [java] v.编译 [kәm'pail]' Compilation n.编辑[,kɒmpi'leiʃәn] const...

    收集整理的Android【面试】资料精编汇总(25个).zip

    Android面试常问基础知识点.docx BAT Android面试20题详解.docx Java基础面试题.pdf Java;基础知识点面试专题.docx java;深入源码级的面试题.docx JVM面试专题及答案.pdf view面试专题.docx 中高级专题(View+...

    java版飞机大战源码-Notes:前端学习过程中的笔记,总结了一些常见的前端知识点

    java版飞机大战源码 ...前端学习过程中的一些记录,收集了一些常见的前端知识点。 浏览器相关知识 TypeScript 知识点总结 前端工程化 计算机原理 后端相关知识 数据可视化相关知识 学习资源 视频相关 题目汇总 职场

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【JVM】JVM内存结构,GC垃圾收集解析 52 【JVM】双亲委派模型中,从顶层到底层,都是哪些类加载器,分别加载哪些类? 55 【JVM】能不能自己写个类叫java.lang.System? 57 【JVM】类的加载过程 58 【JVM】类的初始化...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    今天会是有Offer的一天么:面试时被问到的JAVA中的垃圾收集算法

    面试官:咱们来谈谈JAVA方面的相关知识吧。知道有什么垃圾收集器么,知道有哪些垃圾收集算法么? 我:心中一阵窃喜。这不是我前两天晚上打游戏。呸这不是前两天晚上我在《JAVA虚拟机》这本书第三章看过的内容么。...

    最新java面试专题01-JVM

    最新jvm面试题合集,涵盖JVM运行时数据区、垃圾回收算法、垃圾回收器、类加载机制、JIT即时编译等核心知识点及常见面试题,一书在手,天下我有。 JVM内存结构:JVM的内存结构主要包括堆内存、方法区、栈(包括Java...

    java版飞机大战源码-java-club:Java程序员所需要掌握的核心知识都在这里。。。。alittledaily~

    线程池知识点 常见的JUC工具类 常用工具集 JVM问题排查工具-JMC IDEA开发神器 线上调试神器-btrace Git原理与工作流 Linux常用分析工具 数据结构与算法 从二叉搜索树到B+树 经典问题之字符串 经典问题之TOPK 必会...

Global site tag (gtag.js) - Google Analytics