小编pie*_*tom的帖子

swagger JSON文件的空值

我通过Java注释生成的JSON swagger文档遇到了一些麻烦(REST使用Jersey公开,序列化由jackson处理).查看生成的swagger,它包含空值,这会导致swagger UI崩溃(生成的YAML没有此问题).

这里是JSON的摘录:

{
  "swagger": "2.0",
  "info": { "description": null, "version": "1.0.0", "title": "", "termsOfService": null, "contact": null, "license": null },
  "host": "localhost:8080",
  "basePath": "/api",
  "tags": [ { "name": "dataset", "description": null, "externalDocs": null } ],
  "schemes": [ "http" ],
  "consumes": null,
  "produces": null,
  "paths": {
    "/dataset": {
      "get": {
        "tags": ["dataset"],
        "summary": "A dataset",
        "description": "All the available datasets",
        "operationId": "datasetGet",
        "schemes": null,
        "consumes": null,
        "produces": ["application/json"],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Available datasets",
            "schema": { …
Run Code Online (Sandbox Code Playgroud)

java rest jersey jackson swagger

6
推荐指数
1
解决办法
6177
查看次数

Java和对象,数组和基元类型的精确引用大小

我想知道在内存中为对象分配的真实空间.

我尝试用一​​些例子来解释:使用64位JVM,指针大小应该是8个字节,所以:

  • Object singletest = new Object(); 将占用8个字节来引用Object加上Object的大小
  • Object arraytest = new Object[10]; 将需要8个字节来引用存储数组的位置加上8*10个字节来存储数组加上每个Object的大小
  • int singleint = new int; 将只占用2个字节,因为int是基本类型
  • int[] arrayint = new int[10]; 将占用8个字节来引用位置,并将10*2个字节用于元素

而且,这就是Java允许编写这样的代码的原因:

int[][] doublearray = new int[2][];
int[0][] = new int[5];
int[1][] = new int[10];
Run Code Online (Sandbox Code Playgroud)

真正发生的是一个数组会产生一个像对象一样的引用(也就是指针),因此在声明时它并不重要第二维的大小(维度可能不同,它们之间没有链接).然后所采用的空间将是:对doublearray(8字节)的引用,第一维只是对第二维的引用,所以其他8字节*2(第一维尺寸),最后2字节*5加2字节*10 .

所以,最后,如果有这样一个真正的类:

class Test {
   int a, b;
   int getA() {return A};
   void setA(int a) {this.a = a;}
   int getB() {return B};
   void setB(int b) {this.b = b;}
}
Run Code Online (Sandbox Code Playgroud)

当我调用new来实例化时,将使用8字节的指针(或它引用的名称,因为它是Java)加上2 + 2bytes来将整数存储到类中.

问题是:我是对的,还是我写完废话?此外,当我没有实例化一个对象但我只是声明它时,将分配8个字节以供进一步使用?如果我指定一个空值怎么办?

同时对于原始类型我很确定只是声明它将分配所请求的空间(如果我声明一个"int i"然后我可以立即调用i ++因为没有使用引用,只有一部分内存被设置为"0" ). …

java memory arrays pointers memory-consumption

5
推荐指数
1
解决办法
2390
查看次数

标签 统计

java ×2

arrays ×1

jackson ×1

jersey ×1

memory ×1

memory-consumption ×1

pointers ×1

rest ×1

swagger ×1