我想知道如何在以下程序中分配内存:
public class MemoryClass {
public static void main(final String[] args) {
int i = 0;
MemoryClass memoryClass = new MemoryClass();
memoryClass.myMethod(memoryClass);
}
private void myMethod(final Object obj) {
int i = 1;
String s = "HelloWorld!";
}
}
Run Code Online (Sandbox Code Playgroud)
在上图中,堆栈存储器中的内存,obj和s实际上是对它们放置在堆内存中的" 实际对象 " 的引用.
以下是我想到的一系列问题:
MemoryClass
内部对象myMethod
,JVM会在堆栈内存中再次为相同的方法分配内存吗?myMethod
是否会在执行完成后立即释放分配的内存,如果是,它将如何管理问题2中提到的情况(仅当JVM多次为同一方法分配内存时才适用).java.lang.String
类的方法分配内存,如果是这样,为什么呢?我已经在JDK 1.8上工作了几天,在那里我遇到了一些与此类似的代码:
List<Integer> list = Arrays.asList(1,2,3,4,5);
list.stream();
Run Code Online (Sandbox Code Playgroud)
现在,对于使用streams(java.util.stream
)的人来说,它看起来既简单又干净,我找不到实现该java.util.Collection.stream()
方法的实际类.
当我说list.stream()
:我有以下问题:
java.util.stream.Stream
从哪里得到的?我也尝试过的单证看java.util.AbstractCollection
和java.util.AbstractList
,但未能找到它.
考虑以下pojo以供参考:
public class User{
private String username;
private String firstName;
private String middleName;
private String lastName;
private String phone;
//getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序基本上是基于spring-boot的REST API,它公开了两个端点,一个用于创建用户,另一个用于检索用户.
"用户"属于某些类别,group-a,group-b等,我从post请求的标题中获取.
我需要在运行时验证用户数据,验证可能会因用户组而有所不同.
例如,属于组-a的用户可能将电话号码作为可选字段,而对于某些其他组,它可能是必填字段.
正则表达式也可能因其组而异.
我需要能够配置spring,以某种方式动态验证我的pojo一旦创建它们各自的验证集就会根据它们的组触发.
也许我可以创建一个yml/xml配置,允许我启用它?
我宁愿不标注我private String phone
有@NotNull
和@Pattern
.
我的配置如下:
public class NotNullValidator implements Validator {
private String group;
private Object target;
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public Object getTarget() {
return target;
} …
Run Code Online (Sandbox Code Playgroud) <script>
angular.module('module', []);
angular.module('module').controller('hello', function($scope) {
$scope.obj = {
"text": "<u>HelloWorld</u>"
};
});
</script>
<body>
<div ng-app='module' ng-controller='hello'>
Current:{{obj.text}}
<br>
<br> Expected:<u>HelloWorld</u>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我试图读取存储在JSON中的对象,然后将其打印在我的网页上.
我已经提供了上面代码的链接.
我期待输出是一个字符串"HelloWorld",它是下划线.
PS:
java ×3
angularjs ×1
heap-memory ×1
html ×1
jackson ×1
java-8 ×1
java-stream ×1
javascript ×1
memory ×1
spring ×1
spring-boot ×1
stack-memory ×1
validation ×1